国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 開發(fā) > PHP > 正文

php 502 bad gateway的解決方案

2024-05-04 21:50:29
字體:
供稿:網(wǎng)友

今天升級完P(guān)HP出現(xiàn)了502 Bad Gateway錯誤,根據(jù)經(jīng)驗是php-fpm的問題,但是看到網(wǎng)上那些什么訪問量,子進程設(shè)置什么的,但是我這太服務(wù)器壓根沒啥流量。所以只能從配置文件下手看看。

  1. [global
  2. pid = /usr/local/php/var/run/php-fpm.pid 
  3. error_log = /usr/local/php/var/log/php-fpm.log 
  4. log_level = notice 
  5. [www] 
  6. listen = /tmp/php-cgi.sock 
  7. user = www 
  8. group = www 
  9. pm = dynamic 
  10. pm.max_children = 20 
  11. pm.start_servers = 2 
  12. pm.min_spare_servers = 1 
  13. pm.max_spare_servers = 6 
  14. <a href="/"/tags.php/request//"" target="/"_blank/"">request</a>_terminate_timeout = 100 

看到 /tmp/php-cgi.sock 直覺發(fā)現(xiàn)應(yīng)該是個文件,所以前往該目錄查看權(quán)限,發(fā)現(xiàn)文件屬主是 root:root,而我的nginx和php-fpm進程是以www用戶運行的。所以應(yīng)該是權(quán)限問題。

而配置文件中的user = www,group = www也設(shè)置了一個權(quán)限,通過 ps -aux|grep php 發(fā)現(xiàn),這是php-fpm進程的屬主。

知道問題的源頭后便開始查php-fpm的配置,查到了 listen.ower listen.group 設(shè)置。

這是改進之后的文件:

  1. [global
  2. pid = /usr/local/php/var/run/php-fpm.pid 
  3. error_log = /usr/local/php/var/log/php-fpm.log 
  4. log_level = notice 
  5. [www] 
  6. listen = /tmp/php-cgi.sock 
  7. listen.owner = www 
  8. listen.group = www 
  9. user = www 
  10. group = www 
  11. pm = dynamic 
  12. pm.max_children = 20 
  13. pm.start_servers = 2 
  14. pm.min_spare_servers = 1 
  15. pm.max_spare_servers = 6 
  16. request_terminate_timeout = 100 

如果不知道查看配置可以嘗試下面方法

1、查看當前的PHP FastCGI進程數(shù)是否夠用:

netstat -anpo | grep "php-cgi" | wc -l

如果實際使用的“FastCGI進程數(shù)”接近預設(shè)的“FastCGI進程數(shù)”,那么,說明“FastCGI進程數(shù)”不夠用,需要增大。

2、部分PHP程序的執(zhí)行時間超過了Nginx的等待時間,可以適當增加nginx.conf配置文件中FastCGI的timeout時間,例如:

  1. ...... 
  2.   
  3. http  
  4.   
  5.   
  6. ...... 
  7.   
  8. fastcgi_connect_timeout 300; 
  9.   
  10. fastcgi_send_timeout 300; 
  11.   
  12. fastcgi_read_timeout 300; 
  13.   
  14. ...... 
  15.   

補充另一篇文章

1.php-fpm進程數(shù)不夠用

使用 netstat -napo |grep "php-fpm" | wc -l 查看一下當前fastcgi進程個數(shù),如果個數(shù)接近conf里配置的上限,就需要調(diào)高進程數(shù)。

但也不能無休止調(diào)高,可以根據(jù)服務(wù)器內(nèi)存情況,可以把php-fpm子進程數(shù)調(diào)到100或以上,在4G內(nèi)存的服務(wù)器上200就可以。

2. 調(diào)高調(diào)高linux內(nèi)核打開文件數(shù)量

可以使用這些命令(必須是root帳號)

  1. echo 'ulimit -HSn 65536' >> /etc/profile 
  2. echo 'ulimit -HSn 65536' >> /etc/rc.local 
  3. source /etc/profile 

3.腳本執(zhí)行時間超時

如果腳本因為某種原因長時間等待不返回 ,導致新來的請求不能得到處理,可以適當調(diào)小如下配置。

nginx.conf里面主要是如下:

fastcgi_connect_timeout 300;

fastcgi_send_timeout 300;

fastcgi_read_timeout 300;

php-fpm.conf里如要是如下:

request_terminate_timeout = 10s

4.緩存設(shè)置比較小

修改或增加配置到nginx.conf

  1. proxy_buffer_size 64k; 
  2. proxy_buffers  512k; 
  3. proxy_busy_buffers_size 128k; 
  4. 5. recv() failed (104: Connection reset by peer) while reading response header from upstream 

可能的原因機房網(wǎng)絡(luò)丟包或者機房有硬件防火墻禁止訪問該域名

但最重要的是程序里要設(shè)置好超時,不要使用php-fpm的request_terminate_timeout,最好設(shè)成request_terminate_timeout=0;

因為這個參數(shù)會直接殺掉php進程,然后重啟php進程,這樣前端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è)置超時時間。

發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 石门县| 北流市| 凤台县| 师宗县| 大英县| 新津县| 东方市| 成都市| 彩票| 丘北县| 通州市| 屯留县| 南阳市| 来宾市| 太白县| 延边| 丽水市| 广饶县| 郓城县| 蓝田县| 宣威市| 五常市| 格尔木市| 枣阳市| 绍兴市| 垫江县| 河间市| 阳西县| 民勤县| 清远市| 靖边县| 镇宁| 池州市| 大兴区| 舟曲县| 南江县| 宁陕县| 神池县| 茶陵县| 渭源县| 海兴县|