服務(wù)器報錯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)中,有兩個參數(shù)非常的重要:max_requestst 和max_children;具體的原因必須要查看日志才可以弄明白!
1:FastCGI進程是否已經(jīng)啟動
ps aux|grep php
查看是否啟動了php-fpm服務(wù);
2:FastCGI worker進程數(shù)是否不夠
運行l(wèi)inux命令:
netstat -anpo | grep “php-cgi” | wc -l
判斷是否接近FastCGI進程,接近配置文件中設(shè)置的數(shù)值,表明worker進程數(shù)設(shè)置太少;
3.FastCGI執(zhí)行時間過長
根據(jù)實際情況調(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ù)。我有一個朋友服務(wù)器是4核8G的,經(jīng)常一會出現(xiàn)502 Bad Gatewa,又一會正常。CPU和內(nèi)存經(jīng)常爆滿接近100%,負載也接近4。最后,配置升級成8核16G后變就變正常了。)遠遠不只是博主所說的這幾種!這幾種只能說是最常用的吧!具體的原因一定要去查看服務(wù)器的日志;
如何通過查看日志來解決502 Bad Gateway?
二、nginx 502 bad gateway問題怎么解決?
1:查看nginx日志
既然是nginx報錯,首先我們就去查看nginx的日志;執(zhí)行如下命令:
vim /fujieace/nginx/logs/error.log
日志沒有報什么錯,一切正常,顯然不是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ù)器達到pm.max_children設(shè)置](5),考慮提高它
我們只需要修改”pm.max_children” 參數(shù)即可!
說明:
pm.max_children = 30 //設(shè)置子進程最大數(shù)值
舉例:
每個php-fpm子進程占用20M內(nèi)存,服務(wù)器的內(nèi)存是1G,除去系統(tǒng)中其他應(yīng)用占用的內(nèi)存。
假如系統(tǒng)為300M,剩余700M,700/20 = 35,最多設(shè)置35,可以取值稍微低一些為30。
與此同時我們還要調(diào)整以下參數(shù)
pm.start_servers = 10 //php-fpm啟動起始進程數(shù) pm.min_spare_servers = 10 //動態(tài)php-fpm的最小空閑進程數(shù) pm.max_spare_servers = 24 //動態(tài)php-fpm的最大空閑進程數(shù) pm.max_requests = 500 //所有子進程重啟時間
舉例:
所有子進程重啟時間為300s一次,并發(fā)量為50,max_children設(shè)置為30;
max_requests = 300*50/30=500;
如果想讓進程每隔一小時重生一次,則是3600*50/30=6000。
解決辦法:
修改pm.max_children參數(shù)具體操作步驟:
如果你是用的一鍵安裝包,請按以下步驟操作:
1、執(zhí)行vim命令
vim /usr/local/php/etc/php-fpm.conf pm.max_children = 5
直接修改為
pm.max_children = 20
提示:20這個值僅做參考,可以繼續(xù)增加,具體的話請根據(jù)自己的服務(wù)器配置來設(shè)置;請按照上面的計算方法來設(shè)置;并不是越大越好!只要配置后不再報錯就OK!
lnmp一鍵安裝包,如果博主沒記錯,默認(rèn)的是pm.max_children = 10;
2、保存退出并重啟php-fpm;
pkill -9 php //殺掉php進程 ./sbin/php-fpm //重啟php服務(wù)
如果你是用的手工源碼安裝php;修改pm.max_children它的路徑卻不一樣;
網(wǎng)站來舉例:
vim /fujieace/php/etc/php-fpm.d/fujieace.conf
fujieace.conf是我重名命過的,你安裝的時候是修改成什么樣子就是什么樣子,默認(rèn)修改的是www.conf;
其它的也沒什么不同,和上面操作都是一樣的;主要的是要找到php-fpm的配置文件,并修改它的最大子進程個數(shù);
總結(jié)
到此這篇關(guān)于服務(wù)器報錯nginx 502 Bad Gateway的原因及如何解決的文章就介紹到這了,更多相關(guān)服務(wù)器報錯nginx 502 Bad Gateway內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
filebeat收集多個域名網(wǎng)站日志并存儲到不同es索引庫過程
這篇文章主要為大家介紹了filebeat收集多個域名網(wǎng)站日志并存儲到不同es索引庫過程詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2022-08-08通過Nginx配置實現(xiàn)外網(wǎng)訪問內(nèi)網(wǎng)數(shù)據(jù)庫的操作指南
項目開發(fā)部署中經(jīng)常會遇到MySQL或Oracle數(shù)據(jù)庫安裝在內(nèi)網(wǎng),而我們的應(yīng)用服務(wù)只能部署在外網(wǎng),如果實現(xiàn)外網(wǎng)服務(wù)訪問連接內(nèi)網(wǎng)的數(shù)據(jù)庫呢?本次介紹如何通過Nginx配置實現(xiàn)外網(wǎng)訪問內(nèi)網(wǎng)數(shù)據(jù)庫,需要的朋友可以參考下2023-10-10Nginx Lua 根據(jù)參數(shù)請求轉(zhuǎn)發(fā)的實現(xiàn)
本文介紹了如何使用Nginx和Lua腳本實現(xiàn)基于參數(shù)的請求轉(zhuǎn)發(fā),文章詳細說明了配置方法,并提供了示例代碼,幫助讀者理解如何通過NginxLua模塊根據(jù)請求參數(shù)將流量轉(zhuǎn)發(fā)到不同后端服務(wù),這種方法有助于實現(xiàn)靈活的負載均衡和動態(tài)內(nèi)容處理2022-05-05nginx服務(wù)器異常502 bad gateway原因排查
這篇文章主要介紹了nginx服務(wù)器異常502 bad gateway原因排查,本篇文章通過簡要的案例,講解了該項技術(shù)的了解與使用,以下就是詳細內(nèi)容,需要的朋友可以參考下2021-08-08