recv() failed (104: Connection reset by peer) while reading response header from upstream


場景:
      為了得到用戶在線等實時信息,在客戶端做了個ajax輪訓,每隔5秒請求一次;
用戶量一上來,於是問題就來了,頁面各種卡

nginx日志文件
[root@iZt web]# tail -f /data/log/nginx_error.log
2017/06/16 19:20:28 [error] 230555#0: *10228041 recv() failed (104: Connection reset by peer) 
while reading response header from upstream,client: 42.19.1.114, server: 47.18.212.1, request: 
"POST /api-chat/subshade?rnd=880 HTTP/1.1", upstream: "fastcgi://127.0.0.1:9000",
 host: "www.1j008.com", referrer: "http://www.2008.com/6166"
.......狂刷此錯誤

php日志文件 [root@iZt web]# tail
-f /data/log/php-fpm.log [19-Jun-2017 10:51:05] WARNING: [pool www] child 754153 exited on signal 11 (SIGSEGV) after 74.433547 seconds from start [19-Jun-2017 10:51:05] NOTICE: [pool www] child 755405 started .......狂刷此錯誤 百度谷歌后分析結果,大意如下幾點: 1. php程序執行時間超過php-fpm.conf 中 request_terminate_timeout = 300;設置的值,然后php-fpm進程立即退出,
此時nginx得不到php-fpm進程的正確結果,響應502 解決方法: 改request_terminate_timeout 0;不限制超時 2. php-fpm進程數量來不及處理。 解決方法: 增大php-fpm進程數 3. 因為每個php-fpm在處理一定數量請求后自動stop,然后create new php-fpm 解決方法: 改pm.max_requests限制 ..... 對應一下我的日志看來,網上的症狀確實與我的同出一轍。 竊喜.....
沒多久發現不對,對應着改了一輪下來,各種服務重啟, 問題依舊、 好;既然無果那么就分析一下php
-fpm瘋狂的終止原因 [root@iZt web]#dmesg ...... php-fpm[744779]: segfault at 1c ip 00000000007a8ea1 sp 00007ffe40af5330 error 4 in php-fpm[400000+9a9000] php-fpm[744924]: segfault at 10bc890 ip 000000000078931f sp 00007ffe40af56e8 error 4 in php-fpm[400000+9a9000] php-fpm[746677]: segfault at 1c ip 00000000007a8ea1 sp 00007ffe40af5330 error 4 in php-fpm[400000+9a9000] php-fpm[746738]: segfault at 0 ip 00000000007a8ead sp 00007ffe40af5330 error 6 in php-fpm[400000+9a9000] php-fpm[746371] general protection ip:7a8ead sp:7ffe40af5330 error:0 in php-fpm[400000+9a9000] 好了,問題找到 在php里面我確實處理過客戶端ip 類似$_SERVER['REMOVE_ADDR']方法得到的ip 經過ip2long ( string $ip_address )轉換時出錯, 因為 $ip_address = "這里的ip不合符規則里面有逗號" 過濾之.... 安靜了

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM