我們目前在Amazon EC2上的nginx後面運行PHP-FPM。每次高負載時,該站點都會停止響應並向客戶端輸出502錯誤的網關。502在高負載下使用PHP-FPM的錯誤網關nginx
這是從PHP-FPM error.log中
[25月2014 10:29:50]警告日誌:池WWW]服務器達到pm.max_children設置(14),考慮提高它
[25月2014年12點23分11秒]警告:[池WWW]兒童2029退出,代碼爲38736.088351秒之後,從開始
[25月2014年12點23分11秒]注意:[pool www] child 4142開始
這是從nginx的error.log中日誌
2014年2月25日十四時14分30秒[錯誤] 2013#0:* 51168的recv()失敗(104:由對等連接重置),而讀從上游,客戶端響應標頭:192.168.160.215,服務器:domain.com,請求: 「GET/HTTP/1.1」,上游 「的fastcgi://127.0.0.1:9000」,主機: 「www.domain.com」
2014/02/25 14:24:15 [error] 2013#0:* 51310從上游讀取響應標題時,recv()失敗(104:由對等方重置連接),client:192.168.160.215 server: domain.com,請求: 「GET/HTTP/1.1」,上游 「的fastcgi://127.0.0.1:9000」,主機: 「www.domain.com」
2014/02/25 14:40:21 [error] 2013#0:* 51312從上游讀取響應頭時,recv()失敗(104:由對等方重置連接),客戶端:192.168.160.215,server:domain。 com請求:「GET/HTTP/1.1」,上游:「fastcgi://127.0.0.1:9000」,主機:「www.domain.com」
我們已經實現了基於TCP/IP配置這個交流。 Error 502 in nginx + php5-fpm
,並執行此項修復我們的php-fpm的配置以及 502 Gateway Errors under High Load (nginx/php-fpm)
這是我們在PHP-fpm.d/www.conf
listen = 127.0.0.1:9000
pm = dynamic
pm.max_children = 14
pm.start_servers = 7
pm.min_spare_servers = 7
pm.max_spare_servers = 14
和使用的配置config on nginx/conf.d/www.conf看起來像這樣
fastcgi_buffers 256 16k
fastcgi_buffer_size 32k
fastcgi_connect_timeout 300
fastcgi_send_timeout 300
fastcgi_read_timeout 300
嘗試增加pm.max_children = 14(即64),並減少超時。 – ziollek
@ziollek是否有任何特定的理論,我們應該爲我們的最大孩子設置什麼樣的數字? – maeto
此鏈接可能會對您調整配置方面有用 http://www.if-not-true-then-false.com/2011/nginx-and-php-fpm-configuration-and-optimizing-tips -and-tricks/ –