nginx反向代理禅道502或504bad gateway错误 分享链接

作者:柳婷婷 最后编辑:柳婷婷 于 2022-03-03 09:58:14 浏览量:16017
摘要:排除php阻塞的前提下,查看nignx日志,确定具体阻塞原因,修改优化相关配置。

查看服务器日志

查看php-fpm.log  
查nginx日志

查看单个进程打开的最大连接数

ulimit -n
ulimit -a
查看当前tcp连接状况 
netstat -an|awk '/^tcp/{++S[$NF]}END{for (a in S)print a,S[a]}'

修改nginx配置文件

vim  /etc/nginx/nginx.conf

#修改前 
worker_connections 1024;
#修改后:cpu核数8*1024 
worker_connections 8192;
http { 下添加3行
http {
fastcgi_connect_timeout 300;
fastcgi_send_timeout 300;
fastcgi_read_timeout 300;
server { 添加
#添加这3行
fastcgi_buffer_size 64k;
fastcgi_buffers 32 32k;
fastcgi_busy_buffers_size 128k;
#添加这3行
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

重启nginx

nginx -s reload

php-fpm的相关配置

vim /etc/php-fpm.d/www.conf

服务器配置:2核8G
;修改前
pm = dynamic
pm.max_children = 50
pm.start_servers = 5
pm.min_spare_servers = 5
pm.max_spare_servers = 35
;request_terminate_timeout = 0
;修改后
pm = dynamic
pm.max_children = 50
pm.start_servers = 5
pm.min_spare_servers = 5
pm.max_spare_servers = 100
request_terminate_timeout = 1200

vim /etc/php.ini 

;修改前
max_execution_time = 5
;修改后
max_execution_time = 300

重启fpm

查出服务的进程id
ps aux |grep php-fpm
kill -9 进程id
systemctl start php-fpm

nginx参数说明

worker_processes
worker_processes指Nginx的工作进程,这个值是直接受到服务器CPU核数量影响的(当然也有其他影响),Nginx默认配置为auto,意思是会自动检测CPU核做修改,建议worker_processes的值直接修改为CPU的核数。Linux系统可通过命令lscpu查看cpu核数,假如为4,则:worker_processes: 4
worker_connections
worker_connections指单个进程能并发处理的最大连接数,包含了所有的Nginx链接(不仅仅来源于web客户端),默认值是1024,在一些(瞬间)并发量较高的场景中,这个值是远远不够用的。
Nginx官方示例中给定单个进程的worker_connections设置是1024,可以根据worker_processes的值做调整。
即:worker_connections = worker_processes * 1024
worker_rlimit_nofile

代表worker进程的最大打开文件数限制。如果没设置的话,这个值为操作系统的限制。设置后你的操作系统和Nginx可以处理比“ulimit -a”更多的文件,所以把这个值设高,这样Nginx就不会有“too many open files”问题了。

worker_rlimit_nofile默认值是2000,可以将这个值增大到worker_processes*worker_connections,具体可更根据服务器情况调整,但是要注意worker_connections的值不能超过worker_rlimit_nofile。