web-dev-qa-db-ja.com

アップストリームに接続している間、リソースは一時的に利用できません(php5-fpm)

ランダムなページでこのエラーが頻繁に発生するのは、接続が〜+ 10K接続の場合(netstat -an | grep 80 | wc -l)です。これは、空きメモリが+ 10GBあり、サーバーの負荷が3未満のときに発生します。

私の関連する設定:

/etc/php5/fpm/php.ini

memory_limit = 1024M
default_socket_timeout = 120

/etc/php5/fpm/pool.d/www.conf

pm = dynamic 
pm.max_children = 30 
pm.start_servers = 5
pm.min_spare_servers = 2 
pm.max_spare_servers = 5 
;pm.max_requests =20000 #uncommented with any value didn't fixed
request_terminate_timeout = 120s

また、上記の値(子60、開始10、最大10)を2倍にしました。

/etc/nginx/nginx.conf

worker_connections 4024;
keepalive_timeout 10;

Varnishとmemcachedの背後にあるNginx自体が有効になっています。一般に、ページのレンダリングはかなり高速です。

これは非常に一般的な問題のようで、役立つ解決策も、考えられる原因の分析も見つけることができませんでした。だからあなたのヒント/解決策は大歓迎です。

7
alfish

残念ながら、これ以上の詳細なしにこの質問に明確な答えを出すことは困難です。

私はいくつかの推測をしていますが:

私の最初の推測は、php5-fpmワーカーソケットの負荷に対するリッスンバックログが小さすぎることです。 Linuxのデフォルトでは、バックログキューの長さは128です。

それを増やすには、

  1. 増加する net.core.somaxconn sysctl値。
  2. 増加する listen.backlog php5-fpm構成設定。

たとえば、両方を2048に増やして、それが役立つかどうかを確認することができます。

2番目の推測は、nginxワーカーのプロセスごとの最大オープンファイル記述子の制限です。それを増やす適切な方法は、ディストリビューションによって異なります。 Ubuntu/Debianでは、/etc/default/nginxファイルとworker_rlimit_nofile nginx構成設定。

8
snap