WordPressブログの重さ解消!原因はcronに溜まったプラグインのジョブでした

WordPressブログの重さ解消!原因はcronに溜まったプラグインのジョブでした

以前から続いていたブログの表示が重たい状態が昨日やっと解消されました!
これがエックスサーバーの本来の実力ですよ…(感涙)

このGW一番の収穫は間違いなくコレです(^^)

この記事を書いた人


税理士 尾藤武英
税理士 尾藤 武英(びとう たけひで)
京都市左京区下鴨で開業している税理士です。
過去に税理士試験の予備校で相続税を教えていた経験から、相続税が専門分野。Macユーザーで会計ソフトはクラウド推し。
事務所開業以来、ネット上での情報発信や税理士研修講師など、税理士業務以外も積極的に行っています。
詳しいプロフィール(経歴や活動実績など)
本記事の内容やテキスト・画像等の無断転載・無断使用を固く禁じます。
ブログ記事の執筆・編集方針及び注意事項(免責事項・著作権など)

数ヶ月間の「重い」状態がようやく解消!

このブログは最近ずーっと表示が遅い(いわゆる「重い」)状態が続いていました。
2週間前には「fatal error(=処理を停止するほど重大なエラー)」というものが発生して、記事の先頭に置いているSNSボタンの途中までしかブログが表示されない状態にも陥りました。

その状態はとあるプラグイン(後述)を削除したことでなんとか脱したものの、それ以降も根本的にブログが重い状態はさほど変わらず…。

しかし、この連休中に原因をいろいろと探った結果↓このブログ記事にたどり着きまして、おかげでブログが重い状態もようやく解消されましたm(_ _)m
ブログがまたも閲覧不可に!原因はWordPressプラグインとcronでした。対処方法をご紹介 – ラブグアバ

原因は「SNS Count Cache」プラグイン。きっかけはサイトSSL化

上で「エラーが出たけどとあるプラグインを削除したら直った」と書いていますが、そのプラグインとは、「SNS Count Cache」です。

このプラグインは、記事ページの上下に表示しているSNSボタンの中に実際のシェア数を表示してくれるというもの。
「シェア数が表示される=その記事に対してどれだけ反応があったのかがわかりやすい。しかもそれを自動で取得してくれるスグレモノ!」
というわけで、私も前のテーマ(STINGER7)の時からずっと使い続けてきました。

しかし。
サイトをSSL化して以降、このプラグインが正常に動かなくなってしまったのです。
具体的には、それまではこちらが何もしなくても自動でシェア数を取得してくれていたのに、それがピタッと無くなりました。
そして、このブログが重い状態も結果としてこれが原因でした。

「cron」レコードの中に大量の無駄なジョブが…

というのも、今回ブログが重かった原因は、
データベースの中に「SNS Count Cache」のジョブ(ログ?)が溜まりに溜まっていて、それが10メガにも及んでいたからでした。

問題のジョブはデータベースの中の「wp_options」というテーブルの中の「cron」というレコードの中に蓄積されていました。
(階層で表すと、「データベース > wp_options > cron」という感じ?)

「cron」というのは、こちらが設定したスケジュールに基づいてジョブを自動で実行してくれるプログラムのことです。
WordPressでは記事の自動投稿などに使われます。

「Advanced Cron Manager」という、cronの中身を見ることができるプラグインを入れてcronに何があるか見てみると…。
cronの中身を見ることができるプラグインを入れてcronに何があるか見てみると…。

頭に「scc(=SNS Count Cache)」と付いた同じようなジョブが延々と…。
こんなのが万単位で存在していました。
(おかげでこのページすら重くてマトモに表示されない(泣))

このジョブこそが、今回ブログを重くしていた原因だったんです。

SSL化で自動で動かなくなってからずっと溜まっていた?

これ、どういう場合に発生するジョブなのかというと、
「予定の時間にデータを取りたくて頑張ってみたけど取れなかったよ!」
という備忘録みたいなもののようです。
(解釈違っていたらすいません(^^;)

上にも書いたとおり、「SNS Count Cache」プラグインはこのサイトをSSL化して以降自動では動かなくなっていました。

このサイトをSSL化したのは去年の11月末のこと。
それ以来、①このプラグインが動こうとする度に
「またデータが取れなかったよ〜」
といった感じでcronの中にこのジョブがどんどんどんどん溜まっていき、

それが②データベースを圧迫し、
ひいては③このブログ自体を重くしていたようです。

…SSL化の思わぬ弊害がこんなところで出てしまうとは(^^;

「cron」レコードを直接削除しました

とはいえ、原因がわかった以上、あとは「解決する=このジャマなジョブを削除する」だけです。
「Advanced Cron Manager」プラグインを使ってブログの管理画面上で削除もできますが、なんせこちらは1つずつしか削除できない。
しかも重すぎて1コ削除しようにもすぐに画面が固まってしまう(汗

万単位のジョブを削除するにはこれでは現実的ではないので、私が採った方法は、上で紹介したグアバさんの記事の中にもあるとおり、cronのレコード自体を直接削除してしまうというものです。

エックスサーバーの場合、
「サーバーパネル > phpmyadmin(MySQL5.5) > ユーザー名・パスワードを入力」でデータベースの中に入り、そこから「wp_options」というテーブルの中の「cron」というレコードを探します。

「cron」で検索したら
「サーバーパネル > phpmyadmin(MySQL5.5) > ユーザー名・パスワードを入力」でデータベースの中に入り、そこから「wp_options」というテーブルの中の「cron」というレコードを探します

「cron」と付くものが出てきますので、このうち一番上の「cron」を選択して削除。
「サーバーパネル > phpmyadmin(MySQL5.5) > ユーザー名・パスワードを入力」でデータベースの中に入り、そこから「wp_options」というテーブルの中の「cron」というレコードを探します

これで万単位の10メガのジョブが一瞬にして綺麗さっぱり無くなりました。
そして訪れたのは、それまでが嘘のようにサクサク動くブログ!
記事の表示も管理画面も全てがサクサク!まさに夢のようです(^^)

「cron」というレコード自体は削除してもすぐに勝手に復活します。
記事の予約投稿などもそれまでと同じように利用可能です。
(ただ、削除するのはかなり勇気がいりました…(^^;)

余談:根本的な解決はまだ?

ちなみに。
「fatal error」が出て以来削除していた「SNS Count Cache」プラグインですが、便利なプラグインではあるのでできれば使いたい。

なので、サクサクに戻ったあと再度「SNS Count Cache」プラグインを入れてみたんですが、ものの1時間も経たないうちに

・やっぱり自動では動いてくれない

・cronの中でジョブがモリモリ増えていっている

という、「このままほっといたらまたすぐ同じことになるよ」状態に陥っていたので、結局「SNS Count Cache」プラグインは使わないことにしました。

「使いたければちゃんと動いてくれる状態にしろ」ってことなんでしょうが、でも、どうやったらそうなるのか全然わかんないんですよね…。
(ネットに出ている対策法なんかは既にほとんど試しています。)

ほか、同じく自動で動いてくれるはずの「BackWPUp」プラグインなんかもSSL化後は使えなくなったまま(=cronが正常に働いてくれない状態は変わっていない?)で、この辺をどう解消するかは今後の課題として引き続き残ったままです。

あと、SSL化して以降、
「ブログのRSSフィードがサイト内で読み込めない=ホームページにブログの最新記事を表示できない」
状態にもなっていて、こうしたSSL化の事後処理に未だに追われているワタクシです…。

この辺、どなたか解消法をご存知の方がいれば教えてくださいm(_ _)m


【関連記事】


 京都の税理士・尾藤武英税理士事務所
代表税理士がすべての業務を直接担当。
元予備校講師の経験を活かしたわかりやすいアドバイスでお困りごとを解決します。
オンラインでもお受けしていますので、お住まいの地域問わずお気軽にどうぞ。  

この記事をシェアする

この記事を書いた人

税理士 尾藤武英

税理士 尾藤 武英(びとう たけひで)
京都市左京区下鴨で開業している税理士です。
過去に税理士試験の予備校で相続税を教えていた経験から、相続税が専門分野。Macユーザーで会計ソフトはクラウド推し。
事務所開業以来、ネット上での情報発信や税理士研修講師など、税理士業務以外も積極的に行っています。
詳しいプロフィール(経歴や活動実績など)