AWSでMicro InstanceでWordPressがよく落ちる?

こんにちは。今日はWordPressの運用に関するノウハウです。

少し前に本ブログがよく落ちるという現象がありました。
色々検証していると、そのまま使っているApacheの設定やサーバー設定が不十分だったようです。

※本記事の検証はAWS t2.microで行っています。

何が原因だろう?

なんで落ちるのか、検証してみた。
SSHまで繋がりにくいという状態になっていたので、サーバーのメモリやCPUにまで影響があることは想像できていました。

無限ループが起きていないか

無限ループとはプログラムが延々と実行され続けてしまう現象で、同現象はCPU負荷やメモリの使用率をあげてしまいます。

  • プラグイン?
  • テーマファイル?

これらはプラグインのON/OFF、テーマの変更によってそれぞれ測ることで検証できます。ただこの時点ではよくわかりませんでした。もちろん一つ一つソースを見ていけば確実かもしれませんが…、それはなかなかできないなーという場合は、公式テーマやプラグインを使うようにしましょう。

そもそもメモリすごく使う?

WordPress自体多くのメモリを使用すると言われているため、「メモリ食い」が日常的に過剰に起きているのではないかということです。

今回はこれが原因だと想定して、サーバー側の設定を見直しました。

対処方法

apacheの設定を見直そう

/etc/httpd/httpd.conf
などの設定の中には、プロセス数の制限数を設定できる項目があります。

<IfModule prefork.c>
StartServers      8
MinSpareServers    5
MaxSpareServers  20
ServerLimit      256
MaxClients      256
MaxRequestsPerChild  4000
</IfModule>

上記が初期だとすると、以下のように設定しなおしました。

<IfModule prefork.c>
StartServers       3
MinSpareServers    3
MaxSpareServers    6
ServerLimit      140
MaxClients       140
MaxRequestsPerChild  1000
</IfModule>

もちろん同時アクセスを受け付けるためには、この設定を上げる必要がありますが、そのためにはそれに耐えうるサーバーにする必要があります。設定値の説明や基準値などについては以下の参考サイトを御覧ください。

参考:実用 Apache 2.0運用・管理術(3):httpd.confによるWebサーバの最適化 (2/3) – @IT

MySQLが落ちるのが問題?

ここまで色々ブログをみているとMicro Instanceにはスワップ領域がなくMySQLがダウンするという現象があるということがわかってきました。

MySQLの設定(/etc/my.cnf)を少し変えます。最大接続数を調整します。

max_connections = 10

スワップ領域を作る

sudo dd if=/dev/zero of=/swapfile bs=1M count=1024
sudo mkswap /swapfile
sudo swapon /swapfile

こんな感じの設定で、ここ2ヶ月落ちることはなくなりました。


いかがでしたでしょうか?アクセス数を制限するということや、落ちないために若干動作が重くなる、などの副作用もあるようです。
総合的に調べていくと、AWSのMicro InstanceでWordPressを導入する場合、Nginxのほうがいいようです。PHPとの組み合わせも相性がよいですし、サーバーへの負荷も軽減できます。

若干構築が面倒?

そこはAWSのAMI(Amazonのサーバーイメージ)を活用しましょう。
一発で最適なWordPressが立ち上がります。

AWS + Nginx + WordPress | 超高速 WordPress AMI 網元

http://ja.amimoto-ami.com/

他のサーバーサービスでの公開や、どうしても自分でチューニングしないといけないとき、こんな方法で解決してるよ!という情報お待ちしてます!

フォローして続編をチェック

@universionsをフォロー