AWS AMIMOTO

備忘録として箇条書きします。

背景

さくらのVPSで不自由なくやってきたけど、突然負荷が上がってアクセスできなくなったりする不思議現象が起きてログみてもわからないことが月1くらいであるので、もしものためにAWSでもやっておこうかなということで。

やったこと

陣形・桶狭間がいいらしいというので、これをインストール(m1.small)。
ただこれだと、php-fpmがsegfaultして応答しなくなる事象が発生して、原因が特定できず断念。
AMI セルフホスティングプランの方でインスタンス(m1.small)を作成して、それを陣形のELBに接続したら php-fpmの問題がでなかったので(いまのところ)、こちらでいくことに。

インスタンスでやったこと

  • デフォルトのWPはどうせ使わないので設定はせず。
  • rootにパスワードを付ける

$ sudo passwd

#wp-setup example.com

  • nginx ユーザとして ssh 接続する

こちらの通りで。

  • php-fpmのチューニング

CAT MDESというサイトで負荷テストができる。
こちらで計測してみると、子プロセス5個だと75%くらいエラーになったので、子プロセスを30個に増量。
それでも unix:/var/run/php-fpm.sock failed (11: Resource temporarily unavailable)エラーがでることがあったので、UNIXソケットからTCPへ変更
# nano /etc/php-fpm.d/www.conf
listen = 127.0.0.1:9000
#listen.owner = nginx
#listen.group = nginx
#listen.mode = 0666
pm.max_children = 30

# nano /etc/nginx/nginx.conf
upstream phpfpm {
server 127.0.0.1:9000;
}

  • locale-archiveのコンパクト化

php-fpmがこれを使っているので、日・英・独以外のロケールは削除してサイズダウン。
# localedef --list-archive | grep -v -e ^ja -e ^en_GB -e en_US -e ^zh | xargs localedef --delete-from-archive
# cp -a locale-archive locale-archive.tmpl
# build-locale-archive

WPでやったこと

  • プラグイン(元々入っていたもの)
    • Akismet
    • Contact Form 7
    • Nginx Cache Controller
    • WP Multibyte Patch

そうこうしているうちにまたSIGSEGVがでた

どういう条件だと出るのかがまだわからないので、とりあえずダウンしてもすぐ復旧するようにしてみた。
ログ監視ツール logmon (修正パッチつき)」を参照。
# wget http://www-06.ibm.com/jp/linux/tech/doc/attachments/00057580_logmon_20100411.tgz
# tar zxvf 00057580_logmon_20100411.tgz
# cd logmon_20100411/
# nano logmon.patch
# yum install patch
# patch -p1 < logmon.patch
# sh setup.sh
# nano /etc/logmon/logmon.conf
# /etc/init.d/logmon start

/etc/logmon/logmon.conf
:/var/log/php-fpm/error.log
(SIGSEGV)
service php-fpm restart

これで大丈夫かどうかは次でたらわかる。