调用三方系统socket read timeout

我们的应用(以下简称t应用)通过http调用三方应用o,运行一段时间t应用的日志就会出现大量的socket read timeout 重启t应用后就正常了。特殊原因无法dump,请问各位有排查思路和方向吗?

首先得分析日志,然后可以扩充资源,内存、IO以及你的应用可以做负载,最后没办法的办法,应用允许的情况下每晚固定时间重启。

1、socket read timeout表示已经连接成功(即三次握手已经完成),但是服务器没有及时返回数据(没有在设定的时间内返回数据),导致读超时。
2、java在linux中的 Read timed out并不是通过C函数setSockOpt(SO_RCVTIMEO)来设置的,而是通过select(s, timeout).来实现定时器,并抛出JNI异常来控制的
3、java socket读超时的设置是在read()方法被调用的时候传入的,所以只要在read()调用之前设置即可