在我的一台服务器中,运行Nginx,当服务器端要执行长时间的PHP脚本时,客户端容易出现504 Gateway Time-out。
<value name="max_children">128</value> //每一个消耗大约20M内存,根据内存大小设置
<value name="max_requests">1024</value> //每个max_children进程若超过这个数目,就自动杀死,以后用到会自动重建。一般设置1000左右。 <value name="request_terminate_timeout">0s</value> //如果服务器性能足够好,且宽带资源足够充足,PHP脚本没有系循环或BUG的话你可以直接将”request_terminate_timeout”设置成0s。0s的含义是让PHP-CGI一直执行下去而没有时间限制。做不到这点的话,PHP-CGI可能出现某个BUG,或带宽不够充足,或其他原因导致PHP-CGI能够假死。
建议给”request_terminate_timeout”赋一个值,这个值可以根据你服务器的性能进行设定。
fastcgi_connect_timeout 1800;
fastcgi_send_timeout 1800; fastcgi_read_timeout 1800; fastcgi_buffer_size 1024k; fastcgi_buffers 32 1024k; fastcgi_busy_buffers_size 2048k; fastcgi_temp_file_write_size 2048k; 注:两个1024k值必须相等,否则报错。
以下是默认参数:
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;
一、错误提示说明:
复制代码代码示例:
<value name=”max_children”>128</value>
<value name=”request_terminate_timeout”>900s</value>
2、调整nginx.conf的相关设置:
复制代码代码示例:
fastcgi_connect_timeout 600;
fastcgi_send_timeout 600; fastcgi_read_timeout 600; fastcgi_buffer_size 256k; fastcgi_buffers 4 256k; fastcgi_busy_buffers_size 512k; fastcgi_temp_file_write_size 512k;
四、终级解决方案:
终极的解决方案就是:定时平滑重启php-cgi。
复制代码代码示例:
#!/bin/bash
# This script run at */1 /usr/local/php/sbin/php-fpm reload
2、添加至计划任务: |