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
相关文章推荐
- java-模拟tomcat服务器
- i-jetty环境搭配与编译
- 实现单Tomcat多Server配置
- 生产环境下的Tomcat配置
- Linux部署Tomcat服务器
- jenkins------结合maven将svn项目自动部署到tomcat下
- 如何搞定tomcat这只喵~
- PHP数据库长连接mysql_pconnect的细节
- tomcat在opensuse下开机自启失败的原因分析及解决方法
- ajax实现服务器与浏览器长连接的功能
- jsp项目中更改tomcat的默认index.jsp访问路径的方法
- Tomcat 多端口 多应用
- tomcat 5.0 + apache 2.0 完全安装步骤详解
- Tomcat安全设置 win2003 下tomcat权限限制
- Jsp和PHP共用80端口整合Apache和Tomcat(访问时无需加端口号)
- Tomcat服务器 安全设置第1/3页
- tomcat 6.0.20在一个机器上安装多个服务的方法
- Tomcat 5.5 数据库连接池配置
- Tomcat内存溢出分析及解决方法