问题
最近Tomcat服务老是出现连接超时,主要的现象就是在Windows本机使用回环地址访问,都是无法访问状态。查了CPU,内存,网络带宽,TCP连接数,包括Tomcat的JVM内存,和CPU使用,以及实时线程数都不高。版本如下:
- Tomcat8.5.31
- Windows Server 2008 R2 Enterprise Service Pack1
- JDK 8
排查
确定不是程序和网络问题之后,把焦点放在了出问题之前凌晨自动安装的Windows补丁上面,主要是尝试卸载Windows补丁,然后,再看看通过回环地址会不会出现超时。 首先,通过控制面板关闭Windows自动更新,然后,再卸载当前安装的问题补丁,重启后,发现马上Windows马上自动安装了一个新的补丁(很奇怪,难道控制面板上面关闭Windows自动更新打补丁是假的);再次卸载刚刚win自己安装的补丁,但是不马上重启,启动Tomcat观察一段时间发现回环地址访问Tomcat继续卡,再次查看控制面板上面的补丁更新记录,发现win又再次安装了一个新的补丁(我去,我明明禁止更新好吗?),不过在这段时间,我通过任务管理器发现了一个叫TrustedInstaller进程,不知道干嘛的,查看该进程对应的服务叫Windows Modules Installer,这个服务是在开机的时候自动启动的。 Google了一下TrustedInstaller进程,发现了这个: **猜想难道每次卸载当天补丁,然后,过一段时间这个进程就给我重新安装一个新的补丁。**基于这样想法,重新在控制中心把当天的补丁卸载,并且马上杀死TrustedInstaller进程,并把Windows Modules Installer服务调为禁止启动,然后,在重启win,重新开启Tomcat一段时间后,再没有无法访问的现象。
感受
以前和一位同事对接调试FTP的时候,有一次我的服务每天都是在中午12点半访问FTP服务的时候出现超时响应,我把这个现象告诉了我对接的同事,第二天同事说Windows每天在12点半进行一次自动更新。希望开发人生不要遇到windows服务器,《鸟哥的linux私房菜》才是我的最爱。