最新写真はInstagramにてマメに(?)更新中です

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

DSC_7017-2-1

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

この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が重いのでSimple GA Rankingプラグインを導入してみた

このブログで使ってるWPテーマ&レンタルサーバー


この記事をシェアする

ABOUT US
尾藤 武英
京都市左京区下鴨を拠点に活動する税理士です。
出身も左京区で、2年ほど大阪に住んでいた時期を除くとずーっと京都在住。
好きなコトやモノへのこだわりが強く、そんなこだわりを写真というフィルターを通じて表現するのを楽しんでいます。
【好きなコトモノ】カメラ・写真 / Apple製品 / 競馬(厩舎応援&一口馬主) / DEEN / イチロー
【詳しいプロフィールはこちら】
【運営している税理士事務所について】
専門は相続税、会計ソフトはクラウド推しな税理士事務所です。
代表税理士が全ての業務を直接担当。元予備校講師の経験を活かしたわかりやすいアドバイスでお困りごとを解決します。
オンラインでもお受けしていますので、お住まいの地域問わずお気軽にどうぞ!
京都の税理士・尾藤武英税理士事務所ホームページ
京都の税理士・尾藤武英税理士事務所

【税金以外の提供サービス】
セミナーや研修の講師・執筆
ホームページ・ブログ運営の単発相談サービス
 
このブログへのご意見ご感想、セミナー開催要望はお問い合わせページよりどうぞ