nginx+FastCGI到底是谁影响超时时间

需求:

一个php程序要跑一段时间,但是时间不确定。

问题:

当该php程序运行超过一段时间被强制断开连接。

PHP本身超时处理

在 php.ini 中,有一个参数 max_execution_time 可以设置 PHP 脚本的最大执行时间,但是,在 php-cgi(php-fpm) 中,该参数不会起效。真正能够控制 PHP 脚本最大执行时:

<value name="request_terminate_timeout">0s</value>

就是说如果是使用 mod_php5.so 的模式运行 max_execution_time 是会生效的,但是如果是php-fpm模式中运行时不生效的。

max_execution_time

计算的只是PHP脚本本身执行的时间,执行之外的时间都不会计算在内。哪些属于执行之外的时间呢?包含sleep、数据交互、socket交互等等。

request_terminate_timeout = 0  即为不受时间控制,永不超时

request_terminate_timeout引起的资源问题

request_terminate_timeout的值如果设置为0或者过长的时间,可能会引起file_get_contents的资源问题。

如果file_get_contents请求的远程资源如果反应过慢,file_get_contents就会一直卡在那里不会超时。我们知道php.ini 里面max_execution_time 可以设置 PHP 脚本的最大执行时间,但是,在 php-cgi(php-fpm) 中,该参数不会起效。真正能够控制 PHP 脚本最大执行时间的是 php-fpm.conf 配置文件中的request_terminate_timeout参数。

request_terminate_timeout默认值为 0 秒,也就是说,PHP 脚本会一直执行下去。这样,当所有的 php-cgi 进程都卡在 file_get_contents() 函数时,这台 Nginx+PHP 的 WebServer 已经无法再处理新的 PHP 请求了,Nginx 将给用户返回“502 Bad Gateway”。修改该参数,设置一个 PHP 脚本最大执行时间是必要的,但是,治标不治本。例如改成 30s,如果发生 file_get_contents() 获取网页内容较慢的情况,这就意味着 150 个 php-cgi 进程,每秒钟只能处理 5 个请求,WebServer 同样很难避免”502 Bad Gateway”。解决办法是request_terminate_timeout设置为10s或者一个合理的值,或者给file_get_contents加一个超时参数

如果常有请求超时,请打开php-fpm的慢日志,通过日志来确认评估超时时间。

Ngnix中的fastcgi 请求时间控制

fastcgi_connect_timeout

语法:fastcgi_connect_timeout time

默认值:fastcgi_connect_timeout 60

使用字段:http, server, location

指定同FastCGI服务器的连接超时时间,这个值不能超过75秒。

fastcgi_read_timeout

语法:fastcgi_read_timeout time

默认值:fastcgi_read_timeout 60

使用字段:http, server, location

前端FastCGI服务器的响应超时时间,如果有一些直到它们运行完才有输出的长时间运行的FastCGI进程,或者在错误日志中出现前端服务器响应超时错误,可能需要调整这个值。

fastcgi_send_timeout

语法:fastcgi_send_timeout time

默认值:fastcgi_send_timeout 60

使用字段:http, server, location

指令为上游服务器设置等待一个FastCGI进程的传送数据时间,如果有一些直到它们运行完才有输出的长时间运行的FastCGI进程,那么可以修改这个值,如果你在上有服务器的error log里面发现一些超时错误,那么可以恰当的增加这个值。

指令指定请求服务器的超时时间,指完成了2次握手的连接,而不是完整的连接,如果在这期间客户端没有进行数据传递,那么服务器将关闭这个连接。

在nginx+FastCGI 配置测试中

其中在request_terminate_timeout设置为永不超时的情况下,nginx中fastcgi_read_timeout 的设置时间将影响到最终的超时时间。

测试中,如果是php-fpm中的超时

将显示 502 Bad Gateway

<html>

<head><title>502 Bad Gateway</title></head>

<body bgcolor="white">

<center><h1>502 Bad Gateway</h1></center>

<hr><center>nginx</center>

</body>

</html>

如果是nginx中cgi配置超时

将显示 504 Gateway Time-out

<html>

<head><title>504 Gateway Time-out</title></head>

<body bgcolor="white">

<center><h1>504 Gateway Time-out</h1></center>

<hr><center>nginx</center>

</body>

</html>

nginx+FastCGI到底是谁影响超时时间

时间: 2024-10-17 10:42:21

nginx+FastCGI到底是谁影响超时时间的相关文章

转 Nginx+FastCGI到底是谁影响超时时间

需求: 一个php程序要跑一段时间,但是时间不确定. 问题: 当该php程序运行超过一段时间被强制断开连接. PHP本身超时处理 在 php.ini 中,有一个参数 max_execution_time 可以设置 PHP 脚本的最大执行时间,但是,在 php-cgi(php-fpm) 中,该参数不会起效.真正能够控制 PHP 脚本最大执行时: <value name="request_terminate_timeout">0s</value> 就是说如果是使用

优化nginx[超时时间/fastcgi参数]

8.优化nginx连接参数调整超时时间 1)连接超时可以保护服务器资源.简单的说,连接超时是服务的一种自我管理.自我保护的重要机制. 一般Java程序需要长链接,处理效率高. 2)连接超时带来的问题 ·服务器建立新连接也是要消耗资源的,因此,超时设置的太短而并发太大,就会导致服务器瞬间无法响应用户的请求,导致体验下降: ·企业生产有些PHP程序站点希望设置短连接,因为PHP程序建立连接消耗的资源和连接要少:而Java程序站点一般建立设置长连接,因为Java程序建立连接消耗的资源和时间更多,这是语

Nginx+Apache+PHP超时时间设定

今天在做一个数据导入,超时时间一直设置不对,经过几轮查询以后,才知道需要做如下多环节的配置. Nginx需要配置如下超时配置 fastcgi_connect_timeout 300; fastcgi_send_timeout 300; fastcgi_read_timeout 300; 如果使用的是Nginx的代理服务,需要添加如下配置 location / { proxy_read_timeout 300; } PHP端需要修改如下配置 max_execution_time = 300 max

nginx FastCGI模块(FastCGI)配置

http://www.howtocn.org/nginx:nginx%E6%A8%A1%E5%9D%97%E5%8F%82%E8%80%83%E6%89%8B%E5%86%8C%E4%B8%AD%E6%96%87%E7%89%88:standardhttpmodules:fastcgi#fastcgi%E6%A8%A1%E5%9D%97_fastcgi nginx官方文档:http://nginx.org/en/docs/http/ngx_http_fastcgi_module.html 摘要

nginx fastcgi 优化

fastcgi_cache_path /usr/local/nginx/fastcgi_cache levels=1:2 keys_zone=TEST:10m inactive=5m; fastcgi_connect_timeout 300; fastcgi_send_timeout 300; fastcgi_read_timeout 300; fastcgi_buffer_size 64k; fastcgi_buffers 464k; fastcgi_busy_buffers_size 128

百度竞价和正常SEO搜索排名到底有没有影响?

相信很多小伙伴们对百度竞价都有所了解,百度竞价给大家的第一感觉大部分都是"烧钱",选择百度竞价推广的一般都是大企业或者暴利产品.项目等,针对中小企业做推广显然不是太合适.SEO自然搜索排名是任何人.企业.行业一直向往的排名,当然,大部分企业为了同时获得更多流量都会选择2项(百度竞价.SEO优化)同时进行,如果我们做了百度竞价会不会对我们网站SEO优化出来的排名有影响了?下面由李勇SEO为大家做个详细介绍以及分析.百度竞价和正常SEO搜索排名到底有没有影响?官方给出的答案是没有影响的,因

Timeout expired 超时时间已到. 达到了最大池大小 错误及Max Pool Size设置

参考数据库链接串: <add key="data" value="server=192.168.1.123; Port=3306; uid=root; pwd=root;database=data;pooling=true;min pool size=5;max pool size=512;connect timeout = 20; "/> 查看应用程序池占用数量: select * from sysprocesses where dbid= db_id

人民币贬值对房价到底有哪些影响

人民币贬值意味着同样的钱却不值那么多钱了,它对房价方面有哪些影响呢? 实事证明,人民币的贬值与房价的涨跌没有太直接的关系.因此,在这部分资金为了减少由于人民币贬值带来的利差损失时,可能会抛售房地产资产,转成美元汇出境外,可能会在短期内,导致房价的下跌.但是,在实际操作中,如果房价下跌幅度,超过人民币贬值的幅度,也许这些资金就可能不会抛售物业资产,避免造成汇率和价格的双重损失.从今年和去年外资大规模成交的案例来看,前期的短期投机资本已经退出很多了,取而代之的是一些长期投资型基金,它们通常是投资购买

Tuxedo 超时时间控制(转贴)

以下是转贴: ----------------------------------------------------------------------------------------------------------------------------------------------- 源于才文章确实详细,暂且转载于此,谢原发帖主人. Tuxedo 超时控制(转贴)原帖发于DEV2DEV,现转贴在此. TUXEDO超时控制全功略 摘要: 本<功略>集中了TUXEDO应用中,可能涉