ここ数日、自分のサーバーのWordPressコンテンツにアクセスできなくなり、困っていました。
きっかけは、FreeBSDのパッケージメンテナンスとWordPressプラグインをいじったこと。
翌日から、外から一般ユーザーとして自分のサーバーへアクセスする分には問題ないけど、自宅からダッシュボードなど、ログインが必要なページをメンテナンスしようとすると、「service unavailable Error 503」となってしまい、困っていました。サイトが停止しているわけじゃないので、片付けなければいけない用事に時間を取られて、深夜ようやくWordPressのトラブルシュートをしようとしたら、ダッシュボードどころかCMS全体にアクセスできない状況になっていることに気が付きました。
数時間前までは、「Service Unavailable」 だったのに、今は「Read Error」。Read Errorって何だ?
最初は「WP_DEBUG」を true にして調査しようと思っていたのに、そこまでたどり着く前に動かなくなってしまった。静的ページは問題なく動いている。
ということは、WordPress の問題か、PHPかMySQLに原因があるのかも。
デバッグが使えないので、ひょっとするとOS側のログに何か残っていないかと確認してみると、、、
大量に以下のメッセージが記録されていました。
+sonewconn: pcb 0xfffff801371a57c0 (0.0.0.0:80 (proto 6)): Listen queue overflow: 203 already in queue awaiting acceptance (4 occurrences) +sonewconn: pcb 0xfffff801371a57c0 (0.0.0.0:80 (proto 6)): Listen queue overflow: 203 already in queue awaiting acceptance (3 occurrences) +sonewconn: pcb 0xfffff801371a57c0 (0.0.0.0:80 (proto 6)): Listen queue overflow: 203 already in queue awaiting acceptance (15 occurrences) +sonewconn: pcb 0xfffff801371a57c0 (0.0.0.0:80 (proto 6)): Listen queue overflow: 203 already in queue awaiting acceptance (4 occurrences) +sonewconn: pcb 0xfffff801371a57c0 (0.0.0.0:80 (proto 6)): Listen queue overflow: 203 already in queue awaiting acceptance (10 occurrences) +sonewconn: pcb 0xfffff801371a57c0 (0.0.0.0:80 (proto 6)): Listen queue overflow: 203 already in queue awaiting acceptance (11 occurrences) +sonewconn: pcb 0xfffff801371a57c0 (0.0.0.0:80 (proto 6)): Listen queue overflow: 203 already in queue awaiting acceptance (4 occurrences) +sonewconn: pcb 0xfffff801371a57c0 (0.0.0.0:80 (proto 6)): Listen queue overflow: 203 already in queue awaiting acceptance (2 occurrences) +sonewconn: pcb 0xfffff801371a57c0 (0.0.0.0:80 (proto 6)): Listen queue overflow: 203 already in queue awaiting acceptance (3 occurrences) +sonewconn: pcb 0xfffff801371a57c0 (0.0.0.0:80 (proto 6)): Listen queue overflow: 203 already in queue awaiting acceptance (7 occurrences) +sonewconn: pcb 0xfffff801371a57c0 (0.0.0.0:80 (proto 6)): Listen queue overflow: 203 already in queue awaiting acceptance (3 occurrences)
これ何?
よくわからないけど、嫌なメッセージ。Listen queue overflow なので、LANかHDD関係のキューに問題があるっぽい。ハードウェアの故障とは思いたくない、特にHDDの故障だと最悪、のだけど、とりあえず Apacheを再起動してみることに。本当ならOSを再起動したいところですが、立ち上がらなかったら大ごとなので、バックアップできるまでは我慢することにします。
幸いなことに、Apacheの再起動で、システム管理メモの方は復活。しかし、Diabloサイトの方はまだ少しおかしい。
いろいろ切り分けを行ってみたところ、パッケージメンテナンスの方じゃなく、新たにインストールしたプラグイン Presto Player が犯人である事がわかりました。システム管理メモの方にいきなりインストールすると、悪影響があった場合被害が大きいので、重要度が低いDiabloサイトの方で試してよかったわ。
防犯カメラが捉えた深夜 野生動物 が活動する様子の動画をサイトに楽に登録したかったので、動画公開プラグインを探して、Presto Player をインストールしてみたのですが、これが良くなかったみたい。
Presto Player をインストールするだけで、障害が発生するのか、プラグインを有効にした後、おかしくなるのかの切り分けがイマイチ出来ていません。恐らく有効にした後、Service Unavailable になるのでしょうが、途中にキャッシュが入るので、プラグインを無効化した後もしばらく症状が消えず、困ったことになるようです。キャッシュのオフも管理画面から行うので、正確な切り分けなんてやってられない!
端末から、wp-content/plugins の prest-player を一旦リネームした後、プラグインページに移動し、再び prest-player を有効に。これは、リネームしたまま管理画面から削除して変な残骸を残さないため。
Presto Player が消えた後、サイトが復旧しました。
今回、WordPressが動かなくなったのは、新しくチャレンジしようとしたプラグインが原因で、調査途中にOS側にも影響が出て二重の障害となったようです。
解決できてよかったわ。