当前位置: > Linux服务器 > nginx >

超时时间connectTimeout,socketTimeout,proxy_read_timeout,proxy_connect_timeout笔记

时间:2019-06-04 15:54来源:linux.it.net.cn 作者:IT
1、一般的的情况
 
客户端(connectTimeout,socketTimeout) -- 七层接入proxy (connect timeout, read timeout, keepalive timeout, send timeout)-- nginx (proxy_read_timeout,proxy_connect_timeout)-- 后端服务器
 
connectTimeout:建连时间
 
socketTimeout:等待数据的时间
 
2、为什么?
 
程序中设置了connectTimeout, socketTimeout可以防止阻塞,具体地:
 
如果没有connectTimeout,建立tcp链接时,阻塞,假死;
 
如果没有socketTimeout,已经建立的tcp链接,在传输过程中,发送的报文可能会因为网络中断引起程序阻塞,假死;
 
需要注意的是,socket建连时,如果网络层不可达,会直接抛异常,而不是等connectTimeout耗尽。
 
3、在什么情况下会出现超时?
 
从1中的各个层面设置的超时时间看,任何一个环节的超时,都可能引起整个结果的超时。
 
4、举个例子
 
场景:客户端请求某个链接,链接功能是拿到大数据30天统计的结果。
 
无论怎么尝试结果都是502,gateway Timeout。
 
原因:后端处理数据所用的时长超过了proxy_read_timeout或者是proxy read timeout时间限制。(当然这里也有可能其他情况……)
 

 

(责任编辑:IT)
------分隔线----------------------------
栏目列表
推荐内容