[英]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.