[英]Upstart script for Tomcat respawn on Ubuntu
我正在使用foreman export upstart /etc/init
来设置tomcat app服务器,这样可以在Ubuntu中监视和维护可用性。
但是我想提出一些建议:
1)用sudo service tomcat start
启动我的实例后启动sudo service tomcat start
...如果我尝试使用kill <pid>
来kill <pid>
进程...我可以看到它立即被Upstart实用程序重生......但它太快了! 所需的端口尚未发布。 解决这个问题的解决办法是什么?
SEVERE: Failed to initialize end point associated with ProtocolHandler ["http-nio-8443"]
8 java.net.BindException: Address already in use
9 at sun.nio.ch.Net.bind0(Native Method)
43 Caused by: java.net.BindException: Address already in use
44 at sun.nio.ch.Net.bind0(Native Method)
2)我使用initctl list | grep tomcat
initctl list | grep tomcat
找出pid
(在这种情况下是3518)并杀死进程:
$ initctl list | grep tomcat
tomcat start/running
tomcat-web-1 start/running, process 3518
tomcat-web start/running
是否有可能杀死tomcat-web-1实际上是一种测试Upstart重生能力的错误方法?
3)另一个挑战是,如果我只做一次或两次,我会很快遇到内存问题:
376 Error occurred during initialization of VM
377 Could not reserve enough space for object heap
4)最后,默认脚本似乎只处理错误的退出条件的respawn。 但是机器重启并不算作其中之一那么应该如何增强从foreman export upstart /etc/init
的导出来处理这种情况?
我想知道是否有其他人遇到过类似的挑战和/或有解决方法吗?
更新#1(2013年3月4日):
要完成(4),我只需要编辑appname.conf文件的start on
语句以包含start on (... OR runlevel [2345])
在Step2中,列出的所有三个结果实际上都是unix进程。 它们都不是tomcat java webserver。 所以你正在杀死其中一个进程,它可以帮助你监控实际的tomcat / java进程,当它恢复时...它会尝试再次启动tomcat。 运行tomcat的端口从未被释放,内存仍在使用中,因为您永远不会关闭原始的tomcat! 因此,您将体验(1)和(3)。
识别java进程的更好/更简单的方法是将其视为系统监视器等实用程序。 您将看到名为“java”的进程,并且将在此处列出进程ID。 现在为该pid发出一个kill,它会向你演示foreman + upstart respawn工作得很好。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.