1

foreman export upstart /etc/initUbuntuで可用性を監視および維持できるように、Tomcatアプリサーバーをセットアップするために使用しています。

しかし、私がアドバイスを求めているいくつかの課題があります。

1)インスタンスをsudo service tomcat start...で開始した後、...を使用してプロセスを強制終了しようとすると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)私は(この場合は3518 )initctl list | grep tomcatを理解し、プロセスを強制終了するために使用します:pid

$ initctl list | grep tomcat
  tomcat start/running
  tomcat-web-1 start/running, process 3518
  tomcat-web start/running

tomcat-web-1を強制終了することが、Upstartのリスポーン機能をテストするための誤った方法である可能性はありますか?

3)もう1つの課題は、これを1〜2回行うと、すぐにメモリの問題が発生することです。

376 Error occurred during initialization of VM
377 Could not reserve enough space for object heap

4)最後に、デフォルトのスクリプトは、誤った終了条件に対してのみリスポーンを処理するようです。しかし、マシンの再起動はそれらの1つとしてカウントされないので、このシナリオを処理するためにからのエクスポートをどのようforeman export upstart /etc/initに拡張する必要がありますか?

他の誰かが以前に同様の課題に遭遇したことがあるか、および/またはそれらの回避策があるのだろうか?


更新#1(2013年3月4日):

(4)を実行するには、appname.confファイルのstart onステートメントを編集して含める必要がありました。start on (... OR runlevel [2345])

4

1 に答える 1

3

ステップ2では、リストされている3つの結果はすべて実際にはUNIXプロセスです。それらのどれもTomcatJavaWebサーバーではありません。したがって、プロセスの1つを強制終了します。これは、実際のtomcat / javaプロセスを監視するのに役立ち、それが戻ってきたときに..tomcatを再度開始しようとします。tomcatが実行されているポートは解放されておらず、元のtomcatをシャットダウンしたことがないため、メモリはまだ使用されています。したがって、(1)と(3)を経験します。

Javaプロセスを識別するためのより良い/より簡単な方法は、システムモニターなどのユーティリティを調べることです。「java」という名前のプロセスが表示され、そこにプロセスIDが一覧表示されます。次に、そのpidに対してkillを発行します。これにより、フォアマン+upstartリスポーンが正常に機能することがデモされます。

于 2013-03-05T02:50:30.440 に答える