簡體   English   中英

502在高負載下使用PHP-FPM的網關Nginx錯誤

[英]502 Bad gateway nginx with PHP-FPM under high load

我們目前正在Amazon EC2的nginx后面運行PHP-FPM。 該站點將在高負載下每次停止響應並向客戶端輸出502錯誤的網關。

這是來自php-fpm error.log的日志

[2014年2月25日10:29:50]警告:[pool www]服務器已達到pm.max_children設置(14),請考慮將其提高

[25-Feb-2014 12:23:11]警告:[pool www]兒童2029從開始啟動8736.088351秒后退出,代碼3

[2014年2月25日12:23:11]注意:[pool www]子4142已啟動

這是來自Nginx error.log的日志

2014/02/25 14: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 [錯誤] 2013#0:* 51310 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:40:21 [錯誤] 2013#0:* 51312 recv()失敗(104:對等連接重置),同時從上游讀取響應標頭,客戶端:192.168.160.215,服務器:domain.com,請求:“ GET / HTTP / 1.1”,上游:“ fastcgi://127.0.0.1:9000”,主機:“ www.domain.com”

我們已經基於此交換實現了TCP / IP配置。 Nginx + php5-fpm中的錯誤502

並針對我們的php-fpm配置以及高負載(nginx / php-fpm)下的502網關錯誤實施此修復程序

這是我們在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

和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

使用PHP FPM,需要php進程的請求從nginx切換到php-fpm進程,並返回結果。

如果您一次有太多請求(如果您的任何請求花費的時間太長,或者您的資源與您的負載不匹配,則可能會發生這種情況),您將開始收到超時或被php-fpm拒絕的請求。 這是您看到的502錯誤。

[25-Feb-2014 10:29:50] WARNING: [pool www] server reached pm.max_children setting (14), consider raising it

您可以增加它,但這本身並不是解決方案。 達到最大子進程數的原因很可能是由於在您的實例上處理單個請求所花費的時間。 如果您的CPU在這種情況下達到極限,則可能無濟於事。

您可能需要考慮將實例大小作為一種短期解決方案。 或進行代碼更改以更好地利用緩存。

關於“關於應該為最大子集設置多少數字的任何特定理論”,請參見此處https://serverfault.com/questions/295766/what-is-wrong-in-my-php-fpm-configuration

順便說一句,我認為你的價值觀

    pm.start_servers = 7
    pm.min_spare_servers = 7
    pm.max_spare_servers = 14

大嘗試這些

    pm.start_servers = 3
    pm.min_spare_servers = 2
    pm.max_spare_servers = 5

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM