web-dev-qa-db-ja.com

高トラフィックでのNginx503エラー

十分なメモリとCPUがありますが、nginxはトラフィックが多いときに503エラーを表示します。

これがメモリ使用量です

             total       used       free     shared    buffers     cached
Mem:          3383       3370         12          0         37       3071
-/+ buffers/cache:        260       3122
Swap:         4094          0       4094

また、CPU使用率が20%を超えることはありません

top - 13:31:10 up 43 days,  6:47,  3 users,  load average: 0.16, 0.19, 0.22
Tasks:  95 total,   1 running,  92 sleeping,   2 stopped,   0 zombie
Cpu(s):  0.0%us,  0.0%sy,  0.0%ni, 96.7%id,  3.2%wa,  0.0%hi,  0.0%si,  0.2%st
Mem:   3464192k total,  3450844k used,    13348k free,    53248k buffers
Swap:  4192944k total,      100k used,  4192844k free,  3135820k cached

  PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND
    1 root      15   0 10364  648  552 S  0.0  0.0   0:04.33 init
    2 root      RT  -5     0    0    0 S  0.0  0.0   0:14.15 migration/0
    3 root      34  19     0    0    0 S  0.0  0.0   0:00.05 ksoftirqd/0
    4 root      RT  -5     0    0    0 S  0.0  0.0   0:00.00 watchdog/0
    5 root      10  -5     0    0    0 S  0.0  0.0   0:01.10 events/0

このコードを使用して、アクティブな接続を確認します:netstat -an |grep :80 |wc -l

これが1500未満の数値を示している場合はすべて問題ありませんが、1500を超えると、ユーザーは503エラーを受け取ります。

私は設定しました:worker_processes 2;およびworker_connections 2024;

しかし、それでもこのエラーが発生します。

私を助けて、これを修正する方法を提案してください。そして、このエラーの原因を教えてください。私はnginx0.8.55を使用しています

ありがとうございました。

2
Suman Biswas

Worker_rlimit_nofileとworker_connectionsを増やしてみてください。とにかく、error_logで何が起こっているかを確認するのは良いことです。例えば:

worker_rlimit_nofile 65535;
events {
    worker_connections  65535;
}
0