服務(wù)器報(bào)錯(cuò)nginx?502?Bad?Gateway的原因及如何解決詳解
網(wǎng)站頁面出現(xiàn)502badgateway怎么辦?今天我們來分析一下原因和解決辦法。
一、nginx 502 Bad Gateway出現(xiàn)的原因:
nginx出現(xiàn)502多數(shù)是屬于后端的問題,后期就是PHP的問題,在php服務(wù)當(dāng)中,有兩個(gè)參數(shù)非常的重要:max_requestst 和max_children;具體的原因必須要查看日志才可以弄明白!

1:FastCGI進(jìn)程是否已經(jīng)啟動(dòng)
ps aux|grep php
查看是否啟動(dòng)了php-fpm服務(wù);
2:FastCGI worker進(jìn)程數(shù)是否不夠
運(yùn)行l(wèi)inux命令:
netstat -anpo | grep “php-cgi” | wc -l
判斷是否接近FastCGI進(jìn)程,接近配置文件中設(shè)置的數(shù)值,表明worker進(jìn)程數(shù)設(shè)置太少;
3.FastCGI執(zhí)行時(shí)間過長(zhǎng)
根據(jù)實(shí)際情況調(diào)高以下參數(shù)值
fastcgi_connect_timeout 300; fastcgi_send_timeout 300; fastcgi_read_timeout 300;
4:FastCGI Buffer不夠
nginx和apache一樣,有前端緩沖限制,可以調(diào)整緩沖參數(shù)
fastcgi_buffer_size 32k; fastcgi_buffers 8 32k;
5:其它原因
出現(xiàn)502的情況太多了,(例如:你服務(wù)器目前的配置支撐不了你現(xiàn)有的業(yè)務(wù)。我有一個(gè)朋友服務(wù)器是4核8G的,經(jīng)常一會(huì)出現(xiàn)502 Bad Gatewa,又一會(huì)正常。CPU和內(nèi)存經(jīng)常爆滿接近100%,負(fù)載也接近4。最后,配置升級(jí)成8核16G后變就變正常了。)遠(yuǎn)遠(yuǎn)不只是博主所說的這幾種!這幾種只能說是最常用的吧!具體的原因一定要去查看服務(wù)器的日志;
如何通過查看日志來解決502 Bad Gateway?
二、nginx 502 bad gateway問題怎么解決?
1:查看nginx日志
既然是nginx報(bào)錯(cuò),首先我們就去查看nginx的日志;執(zhí)行如下命令:
vim /fujieace/nginx/logs/error.log
日志沒有報(bào)什么錯(cuò),一切正常,顯然不是nginx出的問題;
2:查看php日志
或許不同的環(huán)境,路徑或許不一同,但是很類似,繼續(xù)執(zhí)行l(wèi)inux命令:
vim /fujieace/php/var/log/php-fpm.log
結(jié)果發(fā)現(xiàn)有很多:如下圖

WARNING: [pool www] server reached pm.max_children setting (5), consider raising it;
翻譯過來就是:
警告:[池WWW服務(wù)器達(dá)到pm.max_children設(shè)置](5),考慮提高它
我們只需要修改”pm.max_children” 參數(shù)即可!
說明:
pm.max_children = 30 //設(shè)置子進(jìn)程最大數(shù)值
舉例:
每個(gè)php-fpm子進(jìn)程占用20M內(nèi)存,服務(wù)器的內(nèi)存是1G,除去系統(tǒng)中其他應(yīng)用占用的內(nèi)存。
假如系統(tǒng)為300M,剩余700M,700/20 = 35,最多設(shè)置35,可以取值稍微低一些為30。
與此同時(shí)我們還要調(diào)整以下參數(shù)
pm.start_servers = 10 //php-fpm啟動(dòng)起始進(jìn)程數(shù) pm.min_spare_servers = 10 //動(dòng)態(tài)php-fpm的最小空閑進(jìn)程數(shù) pm.max_spare_servers = 24 //動(dòng)態(tài)php-fpm的最大空閑進(jìn)程數(shù) pm.max_requests = 500 //所有子進(jìn)程重啟時(shí)間
舉例:
所有子進(jìn)程重啟時(shí)間為300s一次,并發(fā)量為50,max_children設(shè)置為30;
max_requests = 300*50/30=500;
如果想讓進(jìn)程每隔一小時(shí)重生一次,則是3600*50/30=6000。
解決辦法:
修改pm.max_children參數(shù)具體操作步驟:
如果你是用的一鍵安裝包,請(qǐng)按以下步驟操作:
1、執(zhí)行vim命令
vim /usr/local/php/etc/php-fpm.conf pm.max_children = 5
直接修改為
pm.max_children = 20
提示:20這個(gè)值僅做參考,可以繼續(xù)增加,具體的話請(qǐng)根據(jù)自己的服務(wù)器配置來設(shè)置;請(qǐng)按照上面的計(jì)算方法來設(shè)置;并不是越大越好!只要配置后不再報(bào)錯(cuò)就OK!
lnmp一鍵安裝包,如果博主沒記錯(cuò),默認(rèn)的是pm.max_children = 10;
2、保存退出并重啟php-fpm;
pkill -9 php //殺掉php進(jìn)程 ./sbin/php-fpm //重啟php服務(wù)

如果你是用的手工源碼安裝php;修改pm.max_children它的路徑卻不一樣;
網(wǎng)站來舉例:
vim /fujieace/php/etc/php-fpm.d/fujieace.conf
fujieace.conf是我重名命過的,你安裝的時(shí)候是修改成什么樣子就是什么樣子,默認(rèn)修改的是www.conf;
其它的也沒什么不同,和上面操作都是一樣的;主要的是要找到php-fpm的配置文件,并修改它的最大子進(jìn)程個(gè)數(shù);
總結(jié)
到此這篇關(guān)于服務(wù)器報(bào)錯(cuò)nginx 502 Bad Gateway的原因及如何解決的文章就介紹到這了,更多相關(guān)服務(wù)器報(bào)錯(cuò)nginx 502 Bad Gateway內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- Nginx 502 Bad Gateway錯(cuò)誤原因及解決方案
- Nginx?502?bad?gateway錯(cuò)誤解決的九種方案及原因
- nginx服務(wù)器異常502 bad gateway原因排查
- Nginx 502 Bad Gateway錯(cuò)誤常見的4種原因和解決方法
- 深入探討:Nginx 502 Bad Gateway錯(cuò)誤的解決方法
- 解決502?Bad?Gateway錯(cuò)誤的詳細(xì)指南與實(shí)例
- 502?Bad?Gateway產(chǎn)生的原因及8個(gè)詳細(xì)的解決方法總結(jié)
- 計(jì)算機(jī)出現(xiàn)502Bad Gateway錯(cuò)誤完全解決指南(不懂代碼也不用懂服務(wù)器)
相關(guān)文章
Nginx中add_header和proxy_set_header的區(qū)別及說明
這篇文章主要介紹了Nginx中add_header和proxy_set_header的區(qū)別及說明,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-06-06
淺析nginx剛剛發(fā)布的JavaScript能力nginScript
Nginx [engine x]是全球最受歡迎,也是最優(yōu)秀的web服務(wù)器、反向代理服務(wù)器。nginScript是JavaScript/ECMAscript的子集,nginScript不是通過V8引擎實(shí)現(xiàn)的。本文給大家介紹nginx剛剛發(fā)布的JavaScript能力nginScript,感興趣的朋友跟著小編一起了解了解吧2015-09-09
實(shí)現(xiàn)nginx&php服務(wù)器配置的非主流配置方法
這種方法并非以前所流行的apache 加 php_module 的方式運(yùn)行,我是采用nginx 作為web服務(wù)器,以fastcgi的方式運(yùn)行php2011-05-05
nginx啟動(dòng)后,訪問報(bào)403錯(cuò)誤問題及解決
Nginx出現(xiàn)Permission denied錯(cuò)誤可能由權(quán)限或文件路徑問題導(dǎo)致,檢查日志發(fā)現(xiàn)啟動(dòng)用戶為root,需修改nginx.conf的user指令與啟動(dòng)用戶一致,并重啟服務(wù),同時(shí)需確認(rèn)文件路徑是否正確2025-09-09
解決Nginx配置靜態(tài)資源文件404 Not Found問題
在使用Nginx作為靜態(tài)資源服務(wù)器時(shí),如果配置了根目錄root導(dǎo)致404錯(cuò)誤,而使用前綴URL配置alias則需要正確處理目錄路徑,使用alias時(shí)要確保目錄名后加‘/’,并且在需要時(shí)使用root和alias配置,本文介紹Nginx配置靜態(tài)資源文件404 Not Found問題解決方法,感興趣的朋友一起看看吧2025-03-03
Nginx rewrite和proxy_pass的區(qū)別及說明
這篇文章主要介紹了Nginx rewrite和proxy_pass的區(qū)別及說明,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-06-06

