日期:2014-05-17  浏览次数:21135 次

Tomcat 在Windows Server 2003下自动关闭(自动宕机)

???? 公司的JAVA WEB应用放在了一台PC Server上供内网测试,项目由我来发布。PC Server安装的系统是Windows Server 2003,内存DDR2 800 2G,CPU:Intel E4500。在这台机器上我部署了两个项目,服务器选择了Apache Tomcat 5.5版本的,JDK 1.6。无意中发现两个web应用运行一段时间就自动关闭了。再重新启动Tomcat还是一样,运行一段时间就自动关闭,非常的诧异。先看了看Catalina下面的日志,更诧异的是日志里居然没有任何异常信息,让我一头雾水。上网查询,看遍了Tomcat自动关闭的几个原因:

?

? 1,并发用户数目过大,也会导致tomcat自动停止服务。? ?
??2,系统本身的网络负载平衡没有做好,导致tomcat自动停止服务;? ?
??3,程序迭代不合理也是一个原因;? ?
??4,数据库连接未关闭,导致资源损耗过重,会引起服务停止;? ?
??5,程序严重错误,引起tomcat停止服务。

???? 各个检查,发现根本与我的情况不同。又有人说是JVM的堆栈内存、永久保护区域内存设置小了,我又不断的调试,最后还是难逃自动关闭的噩梦。但偶然间发现部署在安装版(exe)的Tomcat下面的web应用就不会挂掉,眼前一亮,难不成是负载不平衡导致的服务器挂掉???马上下载Apache+JK,与两个Tomcat一起整合,结果Apache依然坚挺,可tomcat却难逃厄运。

?

???? 就在勉强要自己接受眼前这种现实的情况下,突然注意到和Tomcat一起运行的IE浏览器也一同挂掉,突然想起了可能的原因。因为我是用自己机器的远程连接控制服务器上Web的发布,所以每次我都用管理员的账号登录该机器,但自己曾经对这台机器做过设置,再控制者不再使用服务器时会自动让控制者离开远程控制的控制台,这样允许别人控制服务器。这个空闲等待时间是10分钟。也就是说如果控制者10分钟后不再使用服务器,Server系统会自动踢出该用户,同时也会清空他的配置信息,包括他的会话信息等。也就是说,我用管理员的权限登录Server,部署完项目后,只要一直使用,Tomcat就不会自动关闭,如果我关闭远程连接,系统会在一段时间内结束掉我启用的任何进程,同时也关闭了我开启的两个Tomcat。

?

???? 原因找到了就开始想解决的办法。问了问网管,网管说你可以用console的方式远程登录,这样的效果跟直面操作该机器是一样的,试了试,果真如此。现在系统在服务器上稳定运行,再没出现过自动关闭的情况。至于安装版的Tomcat为何不挂掉,是因为Tomcat起在了服务里面,不会影响到它。