关于Memcache长连接自动重连的问题
我怀疑两个方面:
1. 我的程序有问题
2. server端有问题,用一段时间会关掉我的连接
首先,我用了大约1个小时的时间,简直把我的程序拆的支离破碎了,结果没有发现哪里有问题。
其次,我使用tcpdump观察了一下,发现主动关闭连接的不是server端,而是我的程序。
百思不得其解。这件事简直成了我的一块心病。
隔了一段时间,当我再次使用tcpdump观察的时候,结果如下:
1. 21:27:20.273522 IP 10.55.38.62.60953 > 10.55.38.70.2004: . ack 132 win 501
2. 21:27:20.273757 IP 10.55.38.62.60953 > 10.55.38.70.2004: P 20:142(122) ack 132 win 501
3. 21:27:20.273871 IP 10.55.38.70.2004 > 10.55.38.62.60953: . ack 142 win 255
4. 21:27:21.273955 IP 10.55.38.62.60953 > 10.55.38.70.2004: F 142:142(0) ack 132 win 501
5. 21:27:21.274038 IP 10.55.38.62.37298 > 10.55.38.70.2004: S 3948732568:3948732568(0) win 5792
6. 21:27:21.274165 IP 10.55.38.70.2004 > 10.55.38.62.37298: S 34634952:34634952(0) ack 3948732569 win 5792
21:27:21.274185 IP 10.55.38.62.37298 > 10.55.38.70.2004: . ack 1 win 46
21:27:21.274196 IP 10.55.38.62.37298 > 10.55.38.70.2004: P 1:123(122) ack 1 win 46
21:27:21.274320 IP 10.55.38.70.2004 > 10.55.38.62.37298: . ack 123 win 46
21:27:21.313329 IP 10.55.38.70.2004 > 10.55.38.62.60953: . ack 143 win 255
21:27:21.533806 IP 10.55.38.70.2004 > 10.55.38.62.37298: P 1:9(8) ack 123 win 46
21:27:21.533822 IP 10.55.38.62.37298 > 10.55.38.70.2004: . ack 9 win 46
21:27:22.604843 IP 10.55.38.70.2004 > 10.55.38.62.60953: P 132:140(8) ack 143 win 255
21:27:22.604859 IP 10.55.38.62.60953 > 10.55.38.70.2004: R 3898017016:3898017016(0) win 0
21:27:24.072995 IP 10.55.38.62.37298 > 10.55.38.70.2004: P 123:143(20) ack 9 win 46
============================================
我意外地发现有一个reset包,感觉很奇怪,顺着 60953 端口网上查,发现:
第2个包: 向server端发送数据
第3个包: server端回复收到数据
第4个包: 按说应该server端返回响应数据,但是这里却是client端发了一个finish包
观察第3个包与第4个包之间的时间间隔,基本是1s, 这令我想起了memcache的默认超时时间也是1s,是巧合?显然不是。因为:
第5个包: client端重新发起了连接操作
显然是超时了, 于是重连有了答案。
当然,虽然client关闭了连接,server端却还没有关闭,直到 21:27:22.604859 的时候,服务器端给出了响应数据,但是client已经关闭了,所以出现了被reset的现象。
建议继续学习:
- 关于memcache分布式一致性hash (阅读:11454)
- 长连接(KeepAlive)在 http 连接中的性能影响 (阅读:8242)
- 一种基于长连接的社交游戏服务器程序构架 (阅读:7194)
- Memcache分布式部署方案 (阅读:6431)
- 关于session和memcache的若干问题 (阅读:5013)
- Memcache源代码分析之数据存储 (阅读:4664)
- Memcache mutex设计模式 (阅读:4652)
- Memcache协议的学习 (阅读:4466)
- 解决memcache连接奇慢问题一例 (阅读:4512)
- Memcache源代码分析之网络处理 (阅读:4364)
扫一扫订阅我的微信号:IT技术博客大学习
- 作者:phpor <lijunjie1982@yahoo.com.cn> 来源: PHPor 的blog
- 标签: Memcache 长连接
- 发布时间:2011-06-02 23:25:45
-
[327] WordPress插件开发 -- 在插件使用 -
[151] 解决 nginx 反向代理网页首尾出现神秘字 -
[91] IOS安全–浅谈关于IOS加固的几种方法 -
[50] 二维码的生成细节和原理 -
[50] 到底什么是MVC? -
[50] Linux Used内存到底哪里去了? -
[48] Shell的那些事儿 -
[47] Hacker News 排名算法工作原理 -
[47] 中间件和稳定性平台 -
[46] 浏览器的工作原理:新式网络浏览器幕后揭秘
