服務(wù)器報(bào)錯(cuò)nginx?502?Bad?Gateway的原因及如何解決詳解
網(wǎng)站頁(yè)面出現(xiàn)502badgateway怎么辦?今天我們來(lái)分析一下原因和解決辦法。
一、nginx 502 Bad Gateway出現(xiàn)的原因:
nginx出現(xiàn)502多數(shù)是屬于后端的問(wèn)題,后期就是PHP的問(wèn)題,在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í)間過(guò)長(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)常爆滿(mǎn)接近100%,負(fù)載也接近4。最后,配置升級(jí)成8核16G后變就變正常了。)遠(yuǎn)遠(yuǎn)不只是博主所說(shuō)的這幾種!這幾種只能說(shuō)是最常用的吧!具體的原因一定要去查看服務(wù)器的日志;
如何通過(guò)查看日志來(lái)解決502 Bad Gateway?
二、nginx 502 bad gateway問(wèn)題怎么解決?
1:查看nginx日志
既然是nginx報(bào)錯(cuò),首先我們就去查看nginx的日志;執(zhí)行如下命令:
vim /fujieace/nginx/logs/error.log
日志沒(méi)有報(bào)什么錯(cuò),一切正常,顯然不是nginx出的問(wèn)題;
2:查看php日志
或許不同的環(huán)境,路徑或許不一同,但是很類(lèi)似,繼續(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;
翻譯過(guò)來(lái)就是:
警告:[池WWW服務(wù)器達(dá)到pm.max_children設(shè)置](5),考慮提高它
我們只需要修改”pm.max_children” 參數(shù)即可!
說(shuō)明:
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ù)增加,具體的話(huà)請(qǐng)根據(jù)自己的服務(wù)器配置來(lái)設(shè)置;請(qǐng)按照上面的計(jì)算方法來(lái)設(shè)置;并不是越大越好!只要配置后不再報(bào)錯(cuò)就OK!
lnmp一鍵安裝包,如果博主沒(méi)記錯(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)站來(lái)舉例:
vim /fujieace/php/etc/php-fpm.d/fujieace.conf
fujieace.conf是我重名命過(guò)的,你安裝的時(shí)候是修改成什么樣子就是什么樣子,默認(rèn)修改的是www.conf;
其它的也沒(méi)什么不同,和上面操作都是一樣的;主要的是要找到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ò)誤常見(jiàn)的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)文章
詳解ngx_cache_purge _proxy_cache指令使用
本文主要介紹了詳解ngx_cache_purge _proxy_cache指令使用,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2022-07-07
prometheus監(jiān)控nginx并實(shí)現(xiàn)可視化的操作指南
Nginx是一款高性能的Web服務(wù)器,被廣泛應(yīng)用于各類(lèi)的網(wǎng)站和應(yīng)用程序中,為了保證Nginx的正常工作,我們需要對(duì)其進(jìn)行監(jiān)控和管理,所以本文給大家介紹了prometheus監(jiān)控nginx并實(shí)現(xiàn)可視化的操作指南,需要的朋友可以參考下2024-05-05
在Linux系統(tǒng)中將Redmine和SVN整合入Nginx的方法
這篇文章主要介紹了在Linux系統(tǒng)中將Redmine和SVN整合入Nginx的方法,示例基于CentOS系統(tǒng),并用到了Ruby腳本,需要的朋友可以參考下2015-06-06
Nginx+Dify實(shí)現(xiàn)無(wú)縫負(fù)載多實(shí)例部署
本文主要介紹了Nginx+Dify實(shí)現(xiàn)無(wú)縫負(fù)載多實(shí)例部署,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2026-03-03
Nginx文件上傳500錯(cuò)誤的完整排查與解決過(guò)程
這段ginx權(quán)限配置與臨時(shí)ginx運(yùn)行用戶(hù)不匹配導(dǎo)致上傳500錯(cuò)誤錯(cuò)誤,解析client_body_buffer_size配置影響及修復(fù)方案2026-05-05

