您的位置:首页 > 运维架构 > Tomcat

Tomcat做推送服务引出的对TCP协议的调优

2016-07-11 21:08 459 查看

背景

公司有个会议的产品,使用Tomcat的Comet作为长连接推送服务,随着产品的用户量越来越大,出现了多次无响应事件。

产品在Linux和Windows平台上都有部署,但是Linux一直比较稳定,基本上是Windows出问题。而且公司的产品大多部署在银行内部,所以无法直接服务器检查,因为这个问题一直头疼了好一阵。

分析

公司的会议产品主要是用作iPad的推送服务器,猜测网络不好的时候大量的iPad的产生异常的网络连接阻塞了服务器。

检查产品代码发现是采用Tomcat官方推荐的Comet实现代码,没有发现问题。

通过jVisualVM等工具分析本地Tomcat的服务器连接池和内存溢出,没有发现问题。

而且Linux下比较稳定,Windows容易出现问题,从这点猜测Linux平台和Windows平台的差异也是一个入口点,所以最大的怀疑对象就是网络不稳定导致的相关问题。

重现

根据不断的查找TCP相关协议,猜测客户服务器那边很可能出现了TIME_WAIT,CLOSE_WAIT的TCP连接异常(这点实在是苦逼啊,没法从客户那边的服务器取证。。。)

既然有了怀疑对象就好说了,验证中......

既然网上的文章大都在讲怎么优化,那我这里为了验证问题只能反着来了(实际上反证法没法很准去的验证问题,因为多个异常的现象可能会一样啊

,无论如何实验进行下去!)。

调整TcpTimedWaitDelay,MaxUserPort 参数

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\Tcpip\Parameters]  "TcpTimedWaitDelay"=dword:0000001e
"MaxUserPort"= 20000

长时间的观察中,未完待续。。。

参考资料
http://www.cnblogs.com/tianzhiliang/articles/2400176.html http://blog.csdn.net/mhfh611/article/details/8769617 http://blog.csdn.net/shootyou/article/details/6622226 http://blog.csdn.net/zdwzzu2006/article/details/7716904
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息