Hoà*_*ong 5 java linux apache tomcat tomcat6
我的情况是这样的:
每次在将war文件上传到web-app文件夹之前,我都会通过调用来停止Tomcat sh shutdown.sh.过去大约需要30秒才能完全停机.但现在它不再适用了.
实际上,它做了一些工作,因为当我从网页访问应用程序时,它会抛出503错误(在维护下).但是当我ps aux | grep tomcat用来检查时,tomcat进程仍然存在.它将在那里大约5-10分钟.
我知道可能需要花费额外的时间才能完成所有任务,但是在它完全停止之前它太慢了(5-10分钟).我不明白为什么会这样,但必须有一些原因.也许这与代码或我们最近使用的新部署脚本有关.我几乎不知道在哪里检查.
这对我们的团队很重要,因为我们正在使用"自动部署",我们使用脚本自动打包war文件,在特定时间上传和部署.如果我们在旧的tomcat实例成功关闭之前启动了一个新的tomcat实例,它会挂在那里永恒,并且通过"kill -9"清理任务是令人生畏的.
有没有人尝试过这个问题?任何线索将不胜感激.
Ho\xc3\xa0ng 长 -
\n\n谢谢你的更新。
\n\n1) 您看到 Quartz 作业正在运行的事实以及错误消息都很重要:
\n\n\n\n\n严重:Web 应用程序 [/project] 似乎启动了一个名为 [BasicResourcePool.close() 中的资源销毁器] 的线程,但未能阻止它。这很可能造成内存泄漏。
\n
2)一个建议是配置:
\n\n\n\n\nhttp://forum.springsource.org/showthread.php?17833-Spring-Quartz-Tomcat-no-shutdown
\n\n我有同样的问题。我通过添加\n到SchedulerFactoryBean定义来修复它
\ndestroy-method="destroy"。\n这样,当应用程序停止时,spring会关闭调度程序。
3)另一个建议是添加关闭监听器:
\n\n\n\nhttp://forums.terracotta.org/forums/posts/list/15/4341.page
\n\n使用上下文侦听器并在关闭时引入超时解决了我的问题。我关机后稍等一下:
\n\nRun Code Online (Sandbox Code Playgroud)\npublic void contextDestroyed(ServletContextEvent sce) {\n try {\n factory.getScheduler().shutdown();\n Thread.sleep(1000);\n
| 归档时间: |
|
| 查看次数: |
8404 次 |
| 最近记录: |