琥珀玲珑
琥珀玲珑的世界,也是你们的世界哦。大家一起来吧!!!!

如何设置好timeout,这个题目比较大,我大概结合着自己的经验提供一些参考,当时我不是说这个请求就是设置多少s,或者多少ms,这个是没有意义的,也不能拍着脑袋说。

  • 中间件+存储的timeout设计,除了mysql其他的都还好,可以根据系统的运行情况来调整,mysql的相对比较麻烦,我们能设置的就是获取连接的超时时间,那么设置多长时间合适呢?这个一般来说都是10s,当然这个需要根据整个系统的吞吐和连接池的大小来做相应的设置。
  • 业务超时,grpc+http的,grpc一般都是内部服务的请求,那么我们也需要根据系统的吞吐和业务的情况来做相应的调整,比如现在绝大部分设置的grpc的timeout都是30s,大部分情况下是满足需求的,但是也有风险,就是刚才提到的thread泄露,导致系统的oom,所以说整个设计需要根据系统的情况来做调整
  • 请求第三方的接口的超时,我们一般请求第三方都是http的接口请求,那么http的超时设计也会设计到第三方系统的一个性能的情况,这种一般都需要自己根据系统运行情况来做统计分析,最后得出一个比较合理的值,那么如果不设计timeout会出现什么情况?必然是thread泄露,从而导致oom或者整个系统hang住,有些服务,就是因为请求支付宝和微信没有设置timeout导致tomcat的线程数打满,从而导致整个系统hang住,服务不可用。
posted on 2020-12-25 10:38  琥珀玲珑  阅读(629)  评论(0编辑  收藏  举报