簡體   English   中英

Tomcat的Upstart腳本在Ubuntu上重生

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

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM