nginx サーバー障害

長年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だけとっても複雑な処理があり、障害を特定するのが困難になります。
一つ一つ抑えていくということにはなると思っています。


サーバーが遅くなった場合は、単純にプロセス数を増やしていけばいいのです。
ところがそれをやると、今度はメモリー不足に悩まされます。
メモリー不足を解消するとまた元の問題が発生する。
豊富なメモリーがあれば解決するのですが、レンタルサーバーだとそういうわけにもいかないというのが現状です。
それで、サーバーの設定を恐る恐るイジッて落ち着いてくれるのを待つ、ということを繰り返しています。笑

タグ:

+ タグ編集
  • タグ:

このサイトはreCAPTCHAによって保護されており、Googleの プライバシーポリシー利用規約 が適用されます。

最終更新:2010年03月11日 15:35
ツールボックス

下から選んでください:

新しいページを作成する
ヘルプ / FAQ もご覧ください。