長年nginxでサーバーを運用してきました。
何度もサーバーが落ちたのを経験したので、まとめておきます。
何度もサーバー障害は起きたのですが、nginxが原因になったことは一度もありません。
問題となったのは
1. fastcgi
2. メモリー不足
3. APC
4. データベース
の4つです。
1.fastcgi これがよくエラーになりました。
fastcgiというのはnginxを仲介してphpプログラムを動作させるラッパーです。
fastcgiのプロセスが少ないとタイムアウトのエラーになります。
/usr/bin/php5-fastcgiの内容
/usr/bin/spawn-fcgi -a 127.0.0.1 -p 9000 -u www-data -C 2 -f /usr/bin/php5-cgi
上の2というのがプロセス数でこの値を増やします。
2. メモリー不足
前にも書きましたが、メモリーを積む。プログラムのサイズを小さくすることで対応します。
3. APC
APC というのはPHPのキャッシュプログラムのことです。
APCを導入すると、PHPのレスポンスが早くなります。
php.iniの
apc.shm_size=256
256のこの値を大きくします。この場合は256Mバイトという意味です。
4.データベース
データベースがボトルネックになっていることがあります。
まとめ
サーバー障害が起きた場合、nginx以外をまず疑うことです。
nginxの周りを調べていくと、復旧のめどが立つと思います。
Linuxでは個々のプログラムを大体把握していても、全体となると難しくなります。
実メモリに加えて、スワップがあり、どのようにプロセスにメモリが割り当てられているか、
いつ障害が起きたのか、httpだけとっても複雑な処理があり、障害を特定するのが困難になります。
一つ一つ抑えていくということにはなると思っています。
サーバーが遅くなった場合は、単純にプロセス数を増やしていけばいいのです。
ところがそれをやると、今度はメモリー不足に悩まされます。
メモリー不足を解消するとまた元の問題が発生する。
豊富なメモリーがあれば解決するのですが、レンタルサーバーだとそういうわけにもいかないというのが現状です。
それで、サーバーの設定を恐る恐るイジッて落ち着いてくれるのを待つ、ということを繰り返しています。笑
最終更新:2010年03月11日 15:35