こんばんは。今日はAWS LightSail上で動くWordpress(=私のブログ)に関して、長らくもやもやしていた事象の解明に乗り出してみましたので、その記録を残しておきたいと思います笑
Contents
問題
AWS Light Sailのインスタンス上で動くのWordpressへたまにアクセスできなくなる。ブラウザでURLをたたいても、タイムアウトしてしまいます。
昔は1ヶ月に1回くらいの頻度だったのですが、最近は頻度が増えてきて、1週間に1回くらいは発生している気がします笑
調査
最近頻度が増えた、というところでまずはコンテンツのボリュームが増えてリソースを圧迫してる可能性を疑いました。ので、問題が発生している状況でのリソース状況から順にみていきました。
インスタンスのリソース状況(CPU、メモリ、ディスク)
CPU使用率
逼迫してなかった。
メモリ使用率
問題がおきはじめてからメモリが高い状態にはりついていた・・・!けど70%程度だったので、メモリが不足していたわけではなさそう。何か根本的な原因が他にありそう。
なお、メモリ使用率はLightSailのポータルのメトリックからはなぜか確認できないので、ちょっと構成を仕込む必要あり。リアルタイムで事象が発生していればSSHしてTopをたたいてもいいですし、事後でトラブルシュートするなら、以下の方法でメモリ使用率をCloud Watchにためておく方法があります。
あと、サーバのメモリ使用率は問題なくてもPHPが確保できるメモリが制限されている可能性もあるので、一応確認しておく。Wordpressの場合、管理画面からツール>サイトヘルス>サーバから確認できる。私の場合は、問題ない状況であった。
ディスク使用率
LightSailインスタンスにSSHしてディスク使用率も確認してみます。(コンテンツボリュームが増えていたことの関連が疑わしかったので)
が、こちらも問題はなさそうでした。
dh -h
うーむ。インスタンスのリソース逼迫が原因ではなさそうに見える。
もうちょっとログをちゃんと追っていかないといけないか・・・
トラフィック
の前にトラフィックのバーストがなかったかもみておく(他の人のブログで、DoS攻撃的なものでダウンした例などあったので・・)
が、問題発生開始時刻付近でのバーストは特になし。
Apache(Webサーバ)のログ
ということで、素直にApacheのエラーログを見てみます。Apacheのログは以下の場所になります。
/opt/bitnami/apache2/logs/error_log
みてみると、タイムアウトが始まる前に、謎のプラグイン系のエラーが・・・怪しい・・
## error_logの中身
#### なんかエラーがではじめた(あやしい)
[proxy_fcgi:error]... (70008)Partial results are valid but processing is incomplete: ... AH01075: Error dispatching request to : (reading input brigade)
[proxy_fcgi:error]... AH01071: Got error 'PHP message: PHP Warning: mkdir(): File exists in /opt/bitnami/apps/wordpress/htdocs/wp-content/plugins/wp-optimize/cache/file-based-page-cache-functions.php on line 119', referer: https://www.google.com/
[proxy_fcgi:error]... AH01071: Got error 'PHP message: PHP Warning: unlink(/opt/bitnami/apps/wordpress/htdocs/wp-content/cache/wpo-cache/www.simpletraveler.jp/2021/09/13/javascript-typescript-learning-contents/embed/mobile.index.html.gz): No such file or directory in /opt/bitnami/apps/wordpress/htdocs/wp-content/plugins/wp-optimize/cache/file-based-page-cache-functions.php on line 885', referer: https://www.simpletraveler.jp/2021/09/01/react-typescript-pass-parameter-during-screen-transition/
[proxy_fcgi:error]... AH01071: Got error 'PHP message: Error checking in buffer: The buffer you checked in was not checked out', referer: https://www.simpletraveler.jp/wp-admin/edit.php
[proxy_fcgi:error]... (70008)Partial results are valid but processing is incomplete: ... AH01075: Error dispatching request to : (reading input brigade)
#### こっからずっとタイムアウト
[proxy_fcgi:error]... (70007)The timeout specified has expired:... AH01075: Error dispatching request to : (polling), referer: xxxx
[proxy_fcgi:error]... (70007)The timeout specified has expired:... AH01075: Error dispatching request to : (polling), referer: xxxx
[proxy_fcgi:error]... (70007)The timeout specified has expired:... AH01075: Error dispatching request to : (polling), referer: xxxx
[proxy_fcgi:error]... (70007)The timeout specified has expired:... AH01075: Error dispatching request to : (polling), referer: xxxx
・・・
が、エラー文言でネットを探してもこれだ!という理由が見つからず・・なにがどうなってこのエラーが出ているかというところを調べ切るのは今日はあきらめた笑
ただ、どれもプラグイン「wp-optimize」に関連したエラーなので、このプラグインが何かの原因で悪さしている可能性ありますね・・・
と、管理ポータルで確認してみると、確かに他のキャッシュも有効化してるから競合して予期せぬ起こるかもよ、と言われている。まじでこれかもしれない・・・
根本的な原因は断定に至っていないですが、このプラグインを無効化して事象が発生しなくなるか試してみようと思います。
MySQLのログ
ちなみに、あとMySQLのログもみてみましたが、特にエラーはでておらず。
## sudo catでみれます
/opt/bitnami/mysql/data/mysqld.log
というわけで、根本原因にはたどり着けていないですが、プラグインが怪しそうだということまでは分かったので今日は良しとしたいと思います。
取り急ぎの復旧方法
ちなみに、この事象が起こった場合、なぜかインスタンスの再起動では解消せず・・・
インスタンスを停止→開始してインスタンスを完全に交換すると復旧しました。
なお、このときインスタンス変更でパブリックIPアドレスも変わるので、DNSレコードでのドメインとIPアドレスの紐づけ直しをお忘れなく。忘れていると以下の問題が起きますのでご注意を。
ではでは、同じ問題で困っている方の参考になりましたら幸いです。
おしまい
コメントを残す