日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) >

服务器出现 nginx 502 Bad Gateway

發(fā)布時(shí)間:2025/7/14 40 豆豆
生活随笔 收集整理的這篇文章主要介紹了 服务器出现 nginx 502 Bad Gateway 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
發(fā)生原因
1、PHP FastCGI進(jìn)程數(shù)不夠用
當(dāng)網(wǎng)站并發(fā)訪問(wèn)巨大時(shí),php fastcgi的進(jìn)程數(shù)不有一定的保障,因?yàn)閏gi是單線程多進(jìn)程工作的,也就是說(shuō)cgi需要處理完一個(gè)頁(yè)面后再繼續(xù)下一個(gè)頁(yè)面。如果進(jìn)程數(shù)不夠,當(dāng)訪問(wèn)巨大的時(shí)候,cgi按排隊(duì)處理之前的請(qǐng)求,之后的請(qǐng)求只有被放棄。這個(gè)時(shí)候nginx就會(huì)不時(shí)的出現(xiàn)502錯(cuò)誤。
2、PHP FastCGI的內(nèi)存不夠用
當(dāng)nginx返回靜態(tài)頁(yè)面時(shí),這個(gè)問(wèn)題一般不會(huì)出現(xiàn),因?yàn)閚ginx不需要php cgi的處理而直接返回靜態(tài)頁(yè)面。但是當(dāng)網(wǎng)頁(yè)需要處理大量的php復(fù)雜操作的時(shí)候,例如執(zhí)行api采集,或者采集頁(yè)面的時(shí)候,那對(duì)php的要求是相當(dāng)高的,如果配置給他的內(nèi)存太少,那很容易就會(huì)導(dǎo)致php崩潰。

1、首先判斷是不是php fastcgi進(jìn)程數(shù)是否夠用。
netstat -anpo | grep "php-cgi" | wc -l
如果實(shí)際使用的“FastCGI進(jìn)程數(shù)”接近預(yù)設(shè)的“FastCGI進(jìn)程數(shù)”,那么,說(shuō)明“FastCGI進(jìn)程數(shù)”不夠用,需要增大。 但是要注意計(jì)算你的內(nèi)存是否足夠支撐更多的進(jìn)程數(shù),如果物理機(jī)內(nèi)存并不足夠大,加大這個(gè)進(jìn)程數(shù)是沒(méi)有用處的。
2、部分PHP程序的執(zhí)行時(shí)間超過(guò)了Nginx的等待時(shí)間,可以適當(dāng)增加nginx.conf配置文件中FastCGI的timeout時(shí)間,如下:
http
{
......
fastcgi_connect_timeout 300;
fastcgi_send_timeout 300;
fastcgi_read_timeout 300;
......
}
......
php.ini中memory_limit設(shè)低了會(huì)出錯(cuò),修改了php.ini的memory_limit為64M,重啟nginx,發(fā)現(xiàn)好了,原來(lái)是PHP的內(nèi)存不足了。
如果以上方法依然不能解決問(wèn)題,請(qǐng)嘗試優(yōu)化你的php程序,盡量的減少采集和數(shù)據(jù)庫(kù)操作,加快其反應(yīng)速度,有時(shí)候往往是因?yàn)樽约旱膒hp程序反應(yīng)速度太慢造成的。

3:目前l(fā)nmp一鍵安裝包比較多的問(wèn)題就是502 Bad Gateway,大部分情況下原因是在安裝php前,腳本中某些lib包可能沒(méi)有安裝上,造成php沒(méi)有編譯安裝成功。
解決方法:
可以嘗試根據(jù)lnmp一鍵安裝包中的腳本手動(dòng)安裝一下,看看是什么錯(cuò)誤導(dǎo)致的,在網(wǎng)上搜索一下,或者把錯(cuò)誤信息發(fā)上來(lái)。我們給你分析一下錯(cuò)誤原因。
4:
在php.ini里,eaccelerator配置項(xiàng)一定要放在Zend Optimizer配置之前,否則也可能引起502 Bad Gateway
第三種原因:
在安裝好使用過(guò)程中出現(xiàn)502問(wèn)題,一般是因?yàn)槟J(rèn)php-cgi進(jìn)程是5個(gè),可能因?yàn)閜hpcgi進(jìn)程不夠用而造成502,需要修改/usr/local/php/etc/php-fpm.conf 將其中的max_children值適當(dāng)增加。(一般1個(gè)php-cgi占有20M內(nèi)存,請(qǐng)依照內(nèi)存來(lái)設(shè)定該值)
也有可能是max_requests值不夠用。
5:
php執(zhí)行超時(shí),修改/usr/local/php/etc/php.ini 將max_execution_time 改為300
第五種原因:
磁盤(pán)空間不足,如mysql日志占用大量空間
6:
查看php-cgi進(jìn)程是否在運(yùn)行
可以通過(guò)# top 命令查看。

nginx反向代理解決辦法有點(diǎn)不同
將nginx的error log打開(kāi),發(fā)現(xiàn)”pstream sent too big header while reading response header from upstream”這樣的錯(cuò)誤提示,查閱了一下資料,大意是nginx緩沖區(qū)有一個(gè)bug造成的,我們網(wǎng)站的頁(yè)面消耗占用緩沖區(qū)可能過(guò)大
apache返回的header 太大nginx處理不過(guò)來(lái)就導(dǎo)致了。
代碼如下 復(fù)制代碼

server {
listen 80;
server_name *.xywy.com ;
large_client_header_buffers 4 16k;
#charset koi8-r;
# access_log off;
location / {
#添加這3行 ,
proxy_buffer_size 64k;
proxy_buffers 32 32k;
proxy_busy_buffers_size 128k;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
set $baiduspider '';
if ( $http_user_agent ~ Baiduspider) {
set $baiduspider Baidu;
}
............

如果是 nginx+PHPcgi 就該
fastcgi_connect_timeout 60;
fastcgi_send_timeout 180;
fastcgi_read_timeout 180;
fastcgi_buffer_size 128k;
fastcgi_buffers 4 256k;
fastcgi_busy_buffers_size 256k;
fastcgi_temp_file_write_size 256k;
fastcgi_intercept_errors on
011/01/07 11:12:57 [error] 10770#0: *38585340 upstream timed out (110: Connection timed out) while reading response header from upstream, client: 116.22.131.154, server: *.xywy.com, request: "GET /ysmp/index.php?did=124994 HTTP/1.0", upstream: "http://127.0.0.1:8080/ysmp/index.php?did=124994", host: "xywy.yn16.com"

后來(lái)原來(lái)那錯(cuò)誤沒(méi)了出了新錯(cuò)誤了

upstream timed out 超時(shí)?
代碼如下 復(fù)制代碼

server {
listen 80;
server_name *.xywy.com ;
large_client_header_buffers 4 16k;
client_max_body_size 300m;
client_body_buffer_size 128k;
proxy_connect_timeout 600;
proxy_read_timeout 600;
proxy_send_timeout 600;
proxy_buffer_size 64k;
proxy_buffers 4 32k;
proxy_busy_buffers_size 64k;
proxy_temp_file_write_size 64k;
#charset koi8-r;
# access_log off;

request_terminate_timeout
  如果主要是在一些post或者數(shù)據(jù)庫(kù)操作的時(shí)候出現(xiàn)502這種情況,而不是在靜態(tài)頁(yè)面操作中常見(jiàn),那么可以查看一下php-fpm.conf設(shè)置中的一項(xiàng):
request_terminate_timeout
這個(gè)值是max_execution_time,就是fast-cgi的執(zhí)行腳本時(shí)間。
0s
0s為關(guān)閉,就是無(wú)限執(zhí)行下去。(當(dāng)時(shí)裝的時(shí)候沒(méi)仔細(xì)看就改了一個(gè)數(shù)字)問(wèn)題解決了,執(zhí)行很長(zhǎng)時(shí)間也不會(huì)出錯(cuò)了。優(yōu)化fastcgi中,還可以改改這個(gè)值5s 看看效果。

轉(zhuǎn)載于:https://www.cnblogs.com/matengfei123/p/8656158.html

總結(jié)

以上是生活随笔為你收集整理的服务器出现 nginx 502 Bad Gateway的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。