环境:
winxp + tomcat6.0.18 + jdk1.6u14
现象:
tomcat有个脚本shutdown.bat可以停止运行中的tomcat, 最近发现执行shutdown.bat后tomcat不能马上停止, 需要等个10几秒才会报错停止;
-----------------------------
2009-6-23 23:07:26 org.apache.catalina.startup.Catalina stopServer
严重: Catalina.stop:
java.net.ConnectException: Connection refused: connect
at java.net.PlainSocketImpl.socketConnect(Native Method)
at java.net.PlainSocketImpl.doConnect(Unknown Source)
at java.net.PlainSocketImpl.connectToAddress(Unknown Source)
at java.net.PlainSocketImpl.connect(Unknown Source)
at java.net.SocksSocketImpl.connect(Unknown Source)
at java.net.Socket.connect(Unknown Source)
at java.net.Socket.connect(Unknown Source)
at java.net.Socket.<init>(Unknown Source)
at java.net.Socket.<init>(Unknown Source)
at org.apache.catalina.startup.Catalina.stopServer(Catalina.java:421)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at org.apache.catalina.startup.Bootstrap.stopServer(Bootstrap.java:337)
at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:415)
-----------------------------
排查:
首先google, 全是垃圾信息, 一个没用!
最先怀疑是jdk1.6从u13升级到u14的问题, 因为原来是可以的, 换jdk问题依旧, 排除jdk版本嫌疑;
换tomcat版本, 问题依旧, 排除tomcat版本嫌疑;
换机器, 问题解决, 定位是os设置的问题;
原因:
回想起前一段调试nio程序, 参照ibm的一篇文档(http://publib.boulder.ibm.com/wasce/V2.1.0/zh_CN/tuning-windows.html )用regedit改了HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\TCPIP\Parameters 下的配置, 就是这个改动引起的!
解决:
把增加的TcpTimedWaitDelay , MaxUserPort 项删除, 重启操作系统, 问题解决.