- - PR -
Apacheの常時稼動について
投稿者 | 投稿内容 |
---|---|
|
投稿日時: 2002-09-02 15:35
はじめまして、ゆじと申します。
UNIX初心者の為、変な発言などございましたらご指摘ください。 Linuxサーバーを立ち上げてJavaServletを動かそうと勉強しています。 Apacheとtomcatとインストールし、細かい設定も本とかを参考にしてやっとこ動きました。 動いたのですが、時間が経つとApache(ごめんなさいtomcatの方かもしれません) が止まってしまいサーバーにアクセスしようとするとタイムアウトの状態になってしまいます。 短いと2時間、長いときでも6時間くらい動かすとダメになります。 Apacheのエラーログには、止まったと思われる時間から 次のようなことがずらっと書かれています。 [Sun Sep 1 04:07:11 2002][warn] child process {プロセス番号} still did not exit,sending SIGTERM このエラーについて何かヒントや情報をいただきたいです。 よろしくお願いします。 |
|
投稿日時: 2002-09-03 00:22
せめて、ディストリビューションの種類とApache,tomcat,glibcのバージョンぐらい書きましょう。
pthread問題かな? |
|
投稿日時: 2002-09-03 08:59
回答ありがとうございます。
確かに、質問があいまいでは答えられませんよね。 申し訳ありません。 ちなみに今の開発環境は ・Redhat Linux 7.3 ・Apache-1.3.23 ・tomcat-4.0.3 ・glibc-2.2.5(これについては特に見ていません。どのような影響があるのでしょうか?) 私はpthreadについて、何も知りませんでした。 これから調べてみようと思います。 あと関係あるのか分かりませんが、tomcatを起動してpsコマンドを打つと javaプロセスが30個くらい表示されます。 これは正しいのでしょうか?この数が何に依存するのかご存知でしたら教えていただきたいです。 |
|
投稿日時: 2002-09-03 17:01
自己レスです。
glibc,pthread等について調べてみたのですが、いまひとつ把握できず 結局、進捗がありませんでした。せっかくヒントを頂いたのにすみません。 Java Servletにアクセスするとタイムアウトになりますが、サーバー自体には アクセス出来るので、感覚的にJavaだけが固まっているという感じでしょうか。 Apacheがリクエストを受け取ってtomcatに処理を依頼して、そのまま帰って来ない という印象です。 固まってしまってからは、Apacheとtomcatの両方を再起動すると直ります。 たまに、両方停止してもプロセスとして残ってしまうことがあり、その場合プロセス をkillしてから起動しないと動きません。 問題が問題の為に、Apacheの設定をいじってみても結果的に変わったのかが一晩動かして 置かないと分からないのが辛いところです。 もう少し頑張ってみます。失礼します。 |
|
投稿日時: 2002-09-03 17:12
Tomcatのほうはエラーをはいていませんか?
$TOMCAT_HOME/logs/ あたりにいろいろログが出力されているはずなので、その辺のどれかが 有力な情報を書き出しているかもしれません。 私の経験上、同じようなことが起こった際は、JVMがOutOfMemoryErrorを 起こしていたのですが、どうでしょうか。 |
|
投稿日時: 2002-09-03 18:17
JVMのバージョンはなんでしょうか?
ひとまずそれぞれをスタンドアローンで使用して、Apacheがだめなのか、Tomcatがだめなのか調べると良いかもしれません。 |
|
投稿日時: 2002-09-03 18:35
gsgさん、H2さんご回答ありがとうございます。
今までTomcatのログにも、もちろん目を通していたのですが特に有力な情報を得ること ができませんでした。 しかし改めて見てみると、最初の書き込みに書いたApacheのエラーが吐きだされる時間の 前からTomcatには何もログが残っていないことを発見しました。 どうやらTomcatが死んでから、Apacheにどんどんエラーのログが溜まるようです。 一番最初に気づきそうなモノですが…。 とにかく何かがTomcatを殺しているようです。 ところでJVMについて、ヴァージョン分からないのですがSDKとしては JDK1.3.1 をインストールしています。調べてみます。 |
|
投稿日時: 2002-09-03 23:17
ZZZです。
Apacheのログは溜まるなら死んでいないって言うことですね。恐らくServletに何らかのExceptionが発生したんでしょう。Apacheがリクエストを受け取って、AJPに投げ捨てているんですが、Tomcat側からの返答がないっていうわけだと思います。 しかし、大体の場合、Exceptionが発生した時、その旨を報告してきますが、Exceptionさえ上位層にthrowしないっていうのは、Tomcatのコンテナが死んだことでしょう。ServletやJSPにSystem.exit(1)のようなものがないでしょうか。ServletがJavaアプリと違って、exit()を使うとコンテナまで道連れにします。 |