ブログの重さ解消!原因はデータベースに溜まっていた「SNS Count Cache」のジョブでした

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

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

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

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

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

しかし、この連休中に原因をいろいろと探った結果↓このブログ記事にたどり着きまして、おかげでブログが重い状態もようやく解消されました!

グアバさんありがとうございましたm(_ _)m

原因は「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に何があるか見てみると…。

頭に「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」で検索したら

「cron」と付くものが出てきますので、このうち一番上の「cron」を選択して削除。

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

【追記】
Search Consoleの「クロールの統計情報」の「ページのダウンロード時間」でも↓このように良化がハッキリと伺えます(^^;

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

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

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

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

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

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

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

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

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

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

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

【関連記事】
その後、また別の原因でブログが重くなりました。
WordPress Popular Postsが重いので代替プラグインを導入してみた

あとがき

上に書いたことを含めて、連休中はブログ&ホームページにいろいろと手を加えました。

・いろいろ試して「PageSpeed Insights」のスコアアップを図った
・ホームページに「単発の個別相談」ページを作った
・Googlemapで事務所の場所が正常に表示されるように修正した

などなど。文字にするとたったこれだけですが、結構時間をかけました(^^;

部屋の掃除も細々としたところまでできたし、久々にガッツリIngressもしたし、どこにも行かなかったけどいいGWを過ごせました。
今日からまた気持ちも新たに、ですね。

AUTHORこのブログを書いている人

京都市左京区下鴨で開業している税理士です。税理士試験受験予備校の元講師。相続税法が担当科目だったことから、税理士としても相続・贈与を得意分野としています。個人・法人の経理はクラウド会計に特化&Mac対応可(自身もMacユーザー)。【好きなコトモノ】写真・カメラ(Nikon D500) / Apple製品 / 競走馬の写真を撮る / DEEN / イチロー / 地元京都の四季の風景 / Ingress(RES) 【詳しいプロフィールはこちら】
相続税に強く、クラウド会計に特化した京都市左京区の税理士事務所です。
「専門用語をなるべく省いたわかりやすい説明」と「税理士が直接お客様に全てのサービスを提供すること」を大切にしています。