php nginx超时出错
执行PHP操作大文件insert mysql数据库时,出现这个错误提示
The page you are looking for is temporarily unavailable.
Please try again later.
set_time_limit(0)不限超时已经设置,并且PHP.INI中的错误提示已经打开,但还是出现上面的提示。
于是,查看nginx的错误日志,发现这个错误
2014/02/11 15:51:09 [error] 6085#0: *403 upstream timed out (110: Connection timed out) while reading response header from upstream, client: 192.168.0.34, server: admin38.xx.com, request: "GET /osstest/fread.php?id=98 HTTP/1.1", upstream: "fastcgi://127.0.0.1:9000", host: "admin38.xx.com:1010"
好象是超时了。。
于是 修改nginx的配置文件conf
报这个错误之后,整个服务器就不响应了,但是nginx后面的webpy程序没有任何错误,后端的数据库也很正常,从网上查了很多资料,都是说要修改proxy_read_timeout,proxy_send_timeout和proxy_buffer几个相关设置的值。
如下配置,要放在server配置节之内
large_client_header_buffers 4 16k;
client_max_body_size 30m;
client_body_buffer_size 128k;
#proxy_connect_timeout 300;
#proxy_read_timeout 300;
#proxy_send_timeout 300;
#proxy_buffer_size 64k;
#proxy_buffers 4 32k;
#proxy_busy_buffers_size 64k;
#proxy_temp_file_write_size 64k; fastcgi_connect_timeout 300;
fastcgi_read_timeout 300;
fastcgi_send_timeout 300;
fastcgi_buffer_size 64k;
fastcgi_buffers 4 32k;
fastcgi_busy_buffers_size 64k;
fastcgi_temp_file_write_size 64k;
你可以看到上面是proxy_和fastcgi_两种配置,就是说如果你的nginx后面是proxy,就设置proxy相关的配置,如果是fastcgi就设置fastcgi相关的配置。
这里可以设置最大,如100000,
这里规定了PHP-CGI的连接、发送和读取的时间,300秒足够用了,因此我的服务器很少出现504 Gateway Time-out这个错误。最关键的是php-fpm.conf的设置,这个会直接导致502 Bad Gateway和504 Gateway Time-out。
下面我们来仔细分析一下php-fpm.conf几个重要的参数:
php-fpm.conf有两个至关重要的参数,一个是”max_children”,另一个是”request_terminate_timeout”
我的两个设置的值一个是”40″,一个是”900″,但是这个值不是通用的,而是需要自己计算的。
计算的方式如下:
如果你的服务器性能足够好,且宽带资源足够充足,PHP脚本没有系循环或BUG的话你可以直接 将”request_terminate_timeout”设置成0s。0s的含义是让PHP-CGI一直执行下去而没有时间限制。而如果你做不到这一 点,也就是说你的PHP-CGI可能出现某个BUG,或者你的宽带不够充足或者其他的原因导致你的PHP-CGI能够假死那么就建议你 给”request_terminate_timeout”赋一个值,这个值可以根据你服务器的性能进行设定。一般来说性能越好你可以设置越高,20分钟 -30分钟都可以。由于我的服务器PHP脚本需要长时间运行,有的可能会超过10分钟因此我设置了900秒,这样不会导致PHP-CGI死掉而出现502 Bad gateway这个错误。
而”max_children”这个值又是怎么计算出来的呢?这个值原则上是越大越好,php-cgi的进程多了就会处理的很快,排队的请求就 会很少。设置”max_children”也需要根据服务器的性能进行设定,一般来说一台服务器正常情况下每一个php-cgi所耗费的内存在20M左 右,因此我的”max_children”我设置成40个,20M*40=800M也就是说在峰值的时候所有PHP-CGI所耗内存在800M以内,低于 我的有效内存1Gb。而如果我的”max_children”设置的较小,比如5-10个,那么php-cgi就会“很累”,处理速度也很慢,等待的时间 也较长。如果长时间没有得到处理的请求就会出现504 Gateway Time-out这个错误,而正在处理的很累的那几个php-cgi如果遇到了问题就会出现502 Bad gateway这个错误。
fastcgi_read_timeout 300s;
为防止万一,我在nginx.conf默认配置文件中也修改了最大时间。
- fastcgi_connect_timeout 100000;
- fastcgi_send_timeout 100000;
- fastcgi_read_timeout 100000;
- fastcgi_buffer_size 64k;
- fastcgi_buffers 8 64k;
- fastcgi_busy_buffers_size 64k;
- #fastcgi_temp_file_write_size 64k;
做了上面2个设置后,重启一下
/usr/local/nginx/sbin/nginx -s stop //关闭服务器
/usr/local/nginx/sbin/nginx 开启服务器
php-fpm重启
killall php-fpm
再执行(usr/local/php是php的安装目录)
/usr/local/php/sbin/php-fpm
NGINX反代理超时报错,解决方法:
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;
........................
}
php nginx超时出错的更多相关文章
- nginx 超时问题: upstream timed out (110: Connection timed out) while reading response header from upstream
目录 错误内容 错误原因 错误解决办法 错误内容 我们可以在error.log 里面可以看到 错误内容:upstream timed out (110: Connection timed out) w ...
- nginx超时重发
最近一直遇到一个bug: 客户端会二次请求服务端,服务端多次调用remote服务. 特点是,这些请求都是模型切片相关的,耗时很长的请求,往往需要1分钟左右. 开始以为是客户端代码有问题,进行了二次请求 ...
- emysql add_poop() 超时出错
emysql add_poop() 超时出错(金庆的专栏)sample/a_hello.erl 连接本机更改为连接局域网内的MySql服务器: emysql:add_pool(hello_poo ...
- Nginx超时配置
Nginx超时配置 1.client_header_timeout 语法client_header_timeout time 默认值60s 上下文http server 说明 指定等待client发送 ...
- Nginx启动出错 error while loading shared libraries:
在centos5.7 32位上编译安照 nginx-1.1.16 出错 [root@localhost conf]# /usr/local/nginx/sbin/nginx/usr/local/ngi ...
- PHP查询数据库较慢,nginx 超时 返回 504:Sorry, the page you are looking for is currently unavailable.
现象: PHP查询数据库较慢,大约 60s 后 nginx 返回 504:Sorry, the page you are looking for is currently unavailable. 检 ...
- nginx超时问题
一. 戏说不管你是做运维还是做开发,哪怕你是游客,时不时会遇到502 Bad Gateway或504 Gateway Time-out.出现这页面,把服务重启下,再实在不行重启下服务器,问题就解决了, ...
- Nginx超时设定
最近针对公司的goscon网关发了一个PR,新增了握手阶段的超时判定.现在回顾一下Nginx的所有超时判定,看看目前还缺少哪些判定 ngx_http_core_module包含的timeout: cl ...
- php-fpm nginx 超时参数设置
php-fpm:request_terminate_timeout = 30php.ini:max_execution_time = 30 request_terminate_timeout 适用于, ...
随机推荐
- 【BZOJ4402】Claris的剑(组合计数)
题意: 给定数列的定义: 1.每个元素都是正整数 2.每个元素不能超过M 3.相邻两个元素的差的绝对值必须是1 4.第一个元素的值必须是1 求有多少个长度不超过N的合法的本质不同的序列 两个序列本质不 ...
- Eclipse与MyEclipse修改注释字体颜色
修改配置路劲 Window--->Preferences--->Java--->Editor--->Syntax Coloring--->Element--->Co ...
- css3动画、边框、投影知识
<!doctype html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- C/C++初学攻略
最近有朋友问我C++(or C)怎么入门,其实这个还真不是很好回答的,想了下就写下这篇博文以说下我自己的学习路程吧! 正儿八经的,其实我觉得自己也学得不咋地,不管是C还是C++都是如此的强大,要真正的 ...
- 学习总结——Postman做http接口功能测试
Postman做各种类型的http接口测试 首先,做接口测试前要有明确的接口文档(e.g. http://test.nnzhp.cn/wiki/index.php?doc-view-59) ,假设已经 ...
- 在Alfred添加自定义站内搜索
1.Google的站内搜索和渣度的对比,懒得吐槽了 2.在Alfred添加自定义站内搜索步骤 Add Custome Search 把搜索某个关键词的url复制到里面,把url里的关键词替换成{que ...
- Codeforces Gym101522 D.Distribution of Days-算日期 (La Salle-Pui Ching Programming Challenge 培正喇沙編程挑戰賽 2017)
D.Distribution of Days The Gregorian calendar is internationally the most widely used civil calendar ...
- Mysql varchar长度问题
http://dinglin.iteye.com/blog/914276 http://www.cnblogs.com/fakis/archive/2011/03/07/1976532.html ...
- Codeforces 746G New Roads (构造)
G. New Roads ...
- ActiveMQ spring (一)
在5.8.0版本下 配置成功. 参考文档:http://yinbinhome.iteye.com/blog/1273228