php-fpm 502 bad gateway错误处理
最近一个月经常有客服打电话抱怨页面出现502错误 起初以为是运行游戏程序问题(因为重启php-fpm进程没有用,只有重启游戏才能恢复),后来情况严重了:连论坛都出现了502错误,为了不等领导请喝茶,赶紧查了nginx日志,查出过去几天有各种错误 111: Connection refused 104: Connection reset by peer
[error] 31329#0: *1027762 connect() failed (111: Connection refused) while connecting to upstream ....upstream:"fastcgi://127.0.0.1:9000",......
大致是php超时设置的太小,nginx fastcgi 缓存设置过小
后来查看了nginx 配置,fastcgi_buffers和连接超时这些都是缺省配置php-fpm.conf超时也设置了30s,感觉被php开发和原来的运维坑到了,果断狠心把这些东西都做了修改大致如下 :
在nginx.conf http段加
fastcgi_connect_timeout 300; fastcgi_send_timeout 300; fastcgi_read_timeout 300; fastcgi_buffer_size 64k; fastcgi_buffers 4 64k; fastcgi_busy_buffers_size 128k; fastcgi_temp_file_write_size 128k;
在php-fpm.conf里把request_terminate_timeout = 300
这里关于php—fpm超时设置的略大,还是根据实际情况设置吧
说明:
fastcgi_connect_timeout 指定连接到后端FastCGI的超时时间
fastcgi_send_timeout 指定向FastCGI传送请求的超时时间
fastcgi_read_timeout 指定接收FastCGI应答的超时时间
fastcgi_buffers 4 64k 设置了4个缓冲,每个缓冲64k,总大小(4+1)*64k。默认是和系统的页大小一致4k或8k
作用:如果一个PHP脚本所产生的页面大小为256KB,那么会为其分配4个64KB的缓冲区来缓存;如果页面大小大于256KB,那么大于256KB的部分会缓存到fastcgi_temp指定的文件路径中
fastcgi_buffer_size 64k 是指FastCGI服务器对应头部的缓冲区大小,通常与fastcig_buffers的一个缓冲区大小一致
fastcgi_busy_buffers_size的默认值是fastcgi_buffers的两倍
fastcgi_temp_file_write_size表示在写入缓存文件时使用多大的数据块,默认值是fastcgi_buffers的两倍
request_terminate_timeout php 执行时间超时,可以解决Connection reset by peer的问题
重启php-fpm 重启nginx
我是26号22点左右的时候修改的,昨天没有问题,今天没有问题,查看日志也没有再出现上面的104 111的错误
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。