nginx超时设置
源:http://www.cnblogs.com/discuss/articles/1866851.html
评:
proxy_connect_timeout90;
proxy_send_timeout90;
proxy_read_timeout90;
nginx使用proxy模块时,默认的读取超时时间是60s。
1.send_timeout
syntax:send_timeoutthetime
default:send_timeout60
context:http,server,location
Directiveassignsresponsetimeouttoclient.Timeoutisestablishednotonentiretransferofanswer,butonlybetweentwooperationsofreading,ifafterthistimeclientwilltakenothing,thennginxisshuttingdowntheconnection.
2.负载均衡配置时的2个参数:fail_timeout和max_fails
这2个参数一起配合,来控制nginx怎样认为upstream中的某个server是失效的当在fail_timeout的时间内,某个server连接失败了max_fails次,则nginx会认为该server不工作了。同时,在接下来的fail_timeout时间内,nginx不再将请求分发给失效的server。
个人认为,nginx不应该把这2个时间用同一个参数fail_timeout来控制,要是能再增加一个fail_time,来控制接下来的多长时间内,不再使用down掉的server就更好了~
如果不设置这2个参数,fail_timeout默认为10s,max_fails默认为1。就是说,只要某个server失效一次,则在接下来的10s内,就不会分发请求到该server上
3.proxy模块的proxy_connect_timeout
syntax:proxy_connect_timeouttimeout_in_seconds
context:http,server,location
Thisdirectiveassignsatimeoutfortheconnectiontotheproxyserver.Thisisnotthetimeuntiltheserverreturnsthepages,thisistheproxy_read_timeoutstatement.Ifyourproxyserverisup,buthanging(e.g.itdoesnothaveenoughthreadstoprocessyourrequestsoitputsyouinthepoolofconnectionstodealwithlater),thenthisstatementwillnothelpastheconnectiontotheserverhasbeenmade.Itisnecessarytokeepinmindthatthistimeoutcannotbemorethan75seconds.
4.proxy模块的proxy_read_timeout
syntax:proxy_read_timeoutthe_time
default:proxy_read_timeout60
context:http,server,location
Thisdirectivesetsthereadtimeoutfortheresponseoftheproxiedserver.ItdetermineshowlongNGINXwillwaittogettheresponsetoarequest.Thetimeoutisestablishednotforentireresponse,butonlybetweentwooperationsofreading.
Incontrasttoproxy_connect_timeout,thistimeoutwillcatchaserverthatputsyouinit'sconnectionpoolbutdoesnotrespondtoyouwithanythingbeyondthat.Becarefulthoughnottosetthistoolow,asyourproxyservermighttakealongertimetorespondtorequestsonpurpose(e.g.whenservingyouareportpagethattakessometimetocompute).Youareablethoughtohaveadifferentsettingperlocation,whichenablesyoutohaveahigherproxy_read_timeoutforthereportpage'slocation.
Iftheproxiedservernothingwillcommunicateafterthistime,thennginxisshutconnection.
另一个参考:504GatewayTime-out问题
常见于使用nginx作为webserver的服务器的网站
我遇到这个问题是在升级discuz论坛的时候遇到的
一般看来,这种情况可能是由于nginx默认的fastcgi进程响应的缓冲区太小造成的,这将导致fastcgi进程被挂起,如果你的fastcgi服务对这个挂起处理的不好,那么最后就极有可能导致504GatewayTime-out
现在的网站,尤其某些论坛有大量的回复和很多内容的,一个页面甚至有几百K
默认的fastcgi进程响应的缓冲区是8K,我们可以设置大点
在nginx.conf里,加入:
fastcgi_buffers8128k
这表示设置fastcgi缓冲区为8×128k
当然如果您在进行某一项即时的操作,可能需要nginx的超时参数调大点,例如设置成60秒:
send_timeout60;
调整了这两个参数,结果就是没有再显示那个超时,可以说效果不错,但是也可能是由于其他的原因,目前关于nginx的资料不是很多,很多事情都需要长期的经验累计才有结果。
proxy_redirectoff;
proxy_set_headerHost$host;
proxy_set_headerX-Real-IP$remote_addr;
proxy_set_headerX-Forwarded-For$proxy_add_x_forwarded_for;
client_max_body_size10m;
client_body_buffer_size128k;
proxy_connect_timeout90;
proxy_send_timeout90;
proxy_read_timeout90;
proxy_buffer_size4k;
proxy_buffers324k;
proxy_busy_buffers_size64k;