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

本文深入探讨了网络请求过程中的超时机制,包括客户端、代理服务器及后端服务器的超时配置,解释了connectTimeout与socketTimeout的作用,以及在网络不通畅时如何避免程序假死。通过实例分析,阐述了超时配置不当可能导致的问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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时间限制。(当然这里也有可能其他情况……)

ref:https://blog.youkuaiyun.com/wangjun5159/article/details/78140648

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值