一次对接的timeout事故,元凶居然是tcp_tw_recycle和tcp_timestamps

为什么80%的码农都做不了架构师?>>>   hot3.png

Fri Jul 31 15:45:01 CST 2015 HTTP OK: HTTP/1.1 200 OK - 240 bytes in 0.087 second response time |time=0.087261s;;;0.000000 size=240B;;;0
Fri Jul 31 15:48:01 CST 2015 HTTP OK: HTTP/1.1 200 OK - 240 bytes in 0.078 second response time |time=0.077894s;;;0.000000 size=240B;;;0
Fri Jul 31 15:51:01 CST 2015 HTTP OK: HTTP/1.1 200 OK - 240 bytes in 0.084 second response time |time=0.084313s;;;0.000000 size=240B;;;0
Fri Jul 31 15:54:22 CST 2015 HTTP OK: HTTP/1.1 200 OK - 240 bytes in 21.086 second response time |time=21.085550s;;;0.000000 size=240B;;;0
Fri Jul 31 15:57:31 CST 2015 CRITICAL - Socket timeout after 30 seconds
Fri Jul 31 16:00:01 CST 2015 HTTP OK: HTTP/1.1 200 OK - 240 bytes in 0.080 second response time |time=0.080339s;;;0.000000 size=240B;;;0
Fri Jul 31 16:03:02 CST 2015 HTTP OK: HTTP/1.1 200 OK - 240 bytes in 0.080 second response time |time=0.079804s;;;0.000000 size=240B;;;0
Fri Jul 31 16:06:01 CST 2015 HTTP OK: HTTP/1.1 200 OK - 240 bytes in 0.087 second response time |time=0.086504s;;;0.000000 size=240B;;;0
Fri Jul 31 16:09:01 CST 2015 HTTP OK: HTTP/1.1 200 OK - 240 bytes in 0.084 second response time |time=0.083803s;;;0.000000 size=240B;;;0
Fri Jul 31 16:12:01 CST 2015 HTTP OK: HTTP/1.1 200 OK - 240 bytes in 0.079 second response time |time=0.079404s;;;0.000000 size=240B;;;0
Fri Jul 31 16:15:01 CST 2015 HTTP OK: HTTP/1.1 200 OK - 240 bytes in 0.086 second response time |time=0.086371s;;;0.000000 size=240B;;;0
Fri Jul 31 16:18:01 CST 2015 HTTP OK: HTTP/1.1 200 OK - 240 bytes in 0.080 second response time |time=0.079938s;;;0.000000 size=240B;;;0
Fri Jul 31 16:21:31 CST 2015 CRITICAL - Socket timeout after 30 seconds
Fri Jul 31 16:24:31 CST 2015 CRITICAL - Socket timeout after 30 seconds
Fri Jul 31 16:27:02 CST 2015 HTTP OK: HTTP/1.1 200 OK - 240 bytes in 0.080 second response time |time=0.079929s;;;0.000000 size=240B;;;0
Fri Jul 31 16:30:01 CST 2015 HTTP OK: HTTP/1.1 200 OK - 240 bytes in 0.083 second response time |time=0.082782s;;;0.000000 size=240B;;;0
Fri Jul 31 16:33:22 CST 2015 HTTP OK: HTTP/1.1 200 OK - 240 bytes in 21.081 second response time |time=21.080820s;;;0.000000 size=240B;;;0
Fri Jul 31 16:36:01 CST 2015 HTTP OK: HTTP/1.1 200 OK - 240 bytes in 0.085 second response time |time=0.084818s;;;0.000000 size=240B;;;0
Fri Jul 31 16:39:02 CST 2015 HTTP OK: HTTP/1.1 200 OK - 240 bytes in 0.079 second response time |time=0.078770s;;;0.000000 size=240B;;;0
Fri Jul 31 16:42:01 CST 2015 HTTP OK: HTTP/1.1 200 OK - 240 bytes in 0.084 second response time |time=0.083813s;;;0.000000 size=240B;;;0
Fri Jul 31 16:45:31 CST 2015 CRITICAL - Socket timeout after 30 seconds
Fri Jul 31 16:48:01 CST 2015 HTTP OK: HTTP/1.1 200 OK - 240 bytes in 0.084 second response time |time=0.083595s;;;0.000000 size=240B;;;0
Fri Jul 31 16:51:31 CST 2015 CRITICAL - Socket timeout after 30 seconds
Fri Jul 31 16:54:31 CST 2015 CRITICAL - Socket timeout after 30 seconds
Fri Jul 31 16:57:31 CST 2015 CRITICAL - Socket timeout after 30 seconds
Fri Jul 31 17:00:01 CST 2015 HTTP OK: HTTP/1.1 200 OK - 240 bytes in 0.082 second response time |time=0.082200s;;;0.000000 size=240B;;;0
Fri Jul 31 17:03:01 CST 2015 HTTP OK: HTTP/1.1 200 OK - 240 bytes in 0.082 second response time |time=0.081671s;;;0.000000 size=240B;;;0
Fri Jul 31 17:06:01 CST 2015 HTTP OK: HTTP/1.1 200 OK - 240 bytes in 0.079 second response time |time=0.079241s;;;0.000000 size=240B;;;0
Fri Jul 31 17:09:01 CST 2015 HTTP OK: HTTP/1.1 200 OK - 240 bytes in 0.081 second response time |time=0.081428s;;;0.000000 size=240B;;;0
Fri Jul 31 17:12:31 CST 2015 CRITICAL - Socket timeout after 30 seconds

这次事故主要是和对方做对接,然后我们模拟HTTP的请求的连接对方,发现日志居然是这样

询问对方是不是接口不稳定,对面回答一直都OK,然后左查右查

发现是

tcp_timestamps   的问题,

我们使用tcpdump来捉包,发现带有时间戳的包全部没有完成3此握手,

echo 1  > /proc/sys/net/ipv4/tcp_timestamps;

sysctl -p

然后再检查日志 一切正常了


有更详细的资料请参考

http://dngood.blog.51cto.com/446195/988968/


转载于:https://my.oschina.net/jastme/blog/507971

你可能感兴趣的:(一次对接的timeout事故,元凶居然是tcp_tw_recycle和tcp_timestamps)