nginx加php-fpm出現(xiàn)502 bad gateway錯誤的5種解決方法
nginx出現(xiàn)502有很多原因,但大部分原因可以歸結(jié)為資源數(shù)量不夠用,也就是說后端php-fpm處理有問題,nginx將正確的客戶端請求發(fā)給了后端的php-fpm進(jìn)程,但是因為php-fpm進(jìn)程的問題導(dǎo)致不能正確解析php代碼,最終返回給了客戶端502錯誤。
服務(wù)器出現(xiàn)502的原因是連接超時 我們向服務(wù)器發(fā)送請求 由于服務(wù)器當(dāng)前鏈接太多,導(dǎo)致服務(wù)器方面無法給于正常的響應(yīng),產(chǎn)生此類報錯
因此如果你服務(wù)器并發(fā)量非常大,那只能先增加機(jī)器,然后按以下方式優(yōu)化會取得更好效果;但如果你并發(fā)不大卻出現(xiàn)502,一般都可以歸結(jié)為配置問題,腳本超時問題。
一、php-fpm進(jìn)程數(shù)不夠用
使用 netstat -napo |grep "php-fpm" | wc -l 查看一下當(dāng)前fastcgi進(jìn)程個數(shù),如果個數(shù)接近conf里配置的上限,就需要調(diào)高進(jìn)程數(shù)。
但也不能無休止調(diào)高,可以根據(jù)服務(wù)器內(nèi)存情況,可以把php-fpm子進(jìn)程數(shù)調(diào)到100或以上,在4G內(nèi)存的服務(wù)器上200就可以。
二、調(diào)高調(diào)高linux內(nèi)核打開文件數(shù)量
可以使用這些命令(必須是root帳號)
echo 'ulimit -HSn 65536' >> /etc/profile
echo 'ulimit -HSn 65536' >> /etc/rc.local
source /etc/profile
三、腳本執(zhí)行時間超時
如果腳本因為某種原因長時間等待不返回 ,導(dǎo)致新來的請求不能得到處理,可以適當(dāng)調(diào)小如下配置。
nginx.conf里面主要是如下
fastcgi_connect_timeout 300;
fastcgi_send_timeout 300;
fastcgi_read_timeout 300;
php-fpm.conf里如要是如下
request_terminate_timeout = 10s
四、緩存設(shè)置比較小
修改或增加配置到nginx.conf
proxy_buffer_size 64k;
proxy_buffers 512k;
proxy_busy_buffers_size 128k;
五、 recv() failed (104: Connection reset by peer) while reading response header from upstream
可能的原因機(jī)房網(wǎng)絡(luò)丟包或者機(jī)房有硬件防火墻禁止訪問該域名
但最重要的是程序里要設(shè)置好超時,不要使用php-fpm的request_terminate_timeout,
最好設(shè)成request_terminate_timeout=0;
因為這個參數(shù)會直接殺掉php進(jìn)程,然后重啟php進(jìn)程,這樣前端nginx就會返回104: Connection reset by peer。這個過程是很慢,總體感覺就是網(wǎng)站很卡。
May 01 10:50:58.044162 [WARNING] [pool www] child 4074, script '/usr/local/nginx/html/quancha/sameip/detail.php' execution timed out (15.129933 sec), terminating
May 01 10:50:58.045725 [WARNING] [pool www] child 4074 exited on signal 15 SIGTERM after 90.227060 seconds from start
May 01 10:50:58.046818 [NOTICE] [pool www] child 4082 started
說一千道一萬最重要的就是程序里控制好超時,gethostbyname、curl、file_get_contents等函數(shù)的都要設(shè)置超時時間。
另一個就是多說,這個東西是增加了網(wǎng)站的交互性,但是使用的多了反應(yīng)就慢了,如果你網(wǎng)站超時且使用了多說是,可以關(guān)閉它。
- 502 bad gateway是什么意思 502 bad gateway錯誤解決方法
- Nginx 502 Bad Gateway錯誤原因及解決方案
- Nginx?502?bad?gateway錯誤解決的九種方案及原因
- Nginx 502 Bad Gateway錯誤常見的4種原因和解決方法
- nginx服務(wù)器異常502 bad gateway原因排查
- 深入探討:Nginx 502 Bad Gateway錯誤的解決方法
- Nginx 502 bad gateway和Nginx 504 Gateway Time-out錯誤解決方法 錯誤解決辦法
- 解決Nginx + PHP(FastCGI)遇到的502 Bad Gateway錯誤
- nginx 502 Bad Gateway 錯誤解決辦法
- 502?Bad?Gateway產(chǎn)生的原因及8個詳細(xì)的解決方法總結(jié)
相關(guān)文章
實現(xiàn)nginx&php服務(wù)器配置的非主流配置方法
這種方法并非以前所流行的apache 加 php_module 的方式運行,我是采用nginx 作為web服務(wù)器,以fastcgi的方式運行php2011-05-05nginx搭建圖片服務(wù)器的過程詳解(root和alias的區(qū)別)
這篇文章主要介紹了nginx搭建圖片服務(wù)器(root和alias的區(qū)別)的過程,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2020-10-10詳解Nginx 13: Permission denied 解決方案
這篇文章主要介紹了詳解Nginx 13: Permission denied 解決方案,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2018-07-07nginx服務(wù)器異常502 bad gateway原因排查
這篇文章主要介紹了nginx服務(wù)器異常502 bad gateway原因排查,本篇文章通過簡要的案例,講解了該項技術(shù)的了解與使用,以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下2021-08-08把ImageMagic庫編譯進(jìn)nginx服務(wù)器的一些必要配置
這篇文章主要介紹了把ImageMagic庫編譯進(jìn)nginx服務(wù)器的一些必要配置,本文給出了操作步驟和配置參數(shù)示例,需要的朋友可以參考下2015-06-06