- - PR -
Tomcat アプリケーションハングについて
投稿者 | 投稿内容 | ||||
---|---|---|---|---|---|
|
投稿日時: 2007-01-12 15:29
少し脱線するのですが
NPTLの件ですが、環境変数を設定するだけなのですからJAVA VMのバージョンアップする より、簡単に試せるので実施されてはいかがでしょう。 影響を受けるのは、環境変数を設定したプロセスから起動されたプロセス群に限られる ので、設定したシェルから起動したTomcatだけに限定してテストできるのではない でしょうか? 参照のURLは読んだのですが、一般の環境変数を引き継ぐ範囲への影響とおもえるの ですが、システム全体や他のサービスに影響を与えるのでしょうか? | ||||
|
投稿日時: 2007-01-12 15:54
勉強不足ですみません。よくよく考えれば起動するユーザの環境変数に設定してあげれば、他のサービスへの影響等関係ありませんね。 先ほど、開発環境にて export LD_ASSUME_KERNEL=2.4.19 を設定し、Tomcat を起動してみましたところ、正常に起動致しました。軽くテストしましたが動作上問題なさそうです。 1つ設定前と異なる点といえば ps で Tomcat プロセスをみるところ 以前はプロセスが1つでしたが、複数のプロセスが起動しているようです。 これは NPTL -> LinuxThreads 変更したことによるものと考えてよいでしょうか。 | ||||
|
投稿日時: 2007-01-12 16:05
>以前はプロセスが1つでしたが、複数のプロセスが起動しているようです。
>これは NPTL -> LinuxThreads 変更したことによるものと考えてよいでしょうか。 はい、そういうことです。 http://yusuke.homeip.net/diary/2006/09/24/1159030365101.html #スレッド数の設定も簡単なので直すことを強くオススメしますが・・・ トラブルが解消されると良いですね。 様子を見て是非経過をおしえてください。 [ メッセージ編集済み 編集者: インギ 編集日時 2007-01-12 16:06 ] | ||||
|
投稿日時: 2007-01-12 16:19
御教授いただきありがとうございます。 試してみて結果を御報告させていただきます。 スレッド数につきましてはエンドユーザに交渉後、実施してみます。 これで直ることを強く望みます!! | ||||
|
投稿日時: 2007-02-01 14:58
テスト環境 RedhatES3(カーネル:2.4.21-4.ELsmp)にて環境変数に LD_ASSUME_KERNEL=2.4.19 を設定し、Tomcatを起動したところ、スレッドが複数立ち上がり LinuxThread にて動作していることが確認できた(前書き込み参照)のですが、
Redhat9(カーネル:2.4.20-8)環境にて同様の設定をしたところ、スレッドが複数立ち上がることを確認できませんでした。 何か制限があるのでしょうか。 本番環境はRedhat9(カーネル:2.4.20-9smp)なのですが テスト環境のRedhat9(カーネル:2.4.20-8)にて検証がとれないことには 本番に設定できません。 [テスト環境1] RedhatES3 : 2.4.21-4.ELsmp -> OK [テスト環境2] Redhat9 : 2.4.20-8 -> NG [本番環境 ] Redhat9 : 2.4.20-9smp -> ?? 何か御存知の方お教えください。 | ||||
|
投稿日時: 2007-02-01 16:22
Java というよりは Linux そのものの問題のようですので、こちらへ質問されてはいかがでしょう。
| ||||
|
投稿日時: 2007-02-01 16:30
ご回答ありがとうございます。確かにそうですね。
早速書き込んでみます。 | ||||
|
投稿日時: 2007-04-17 19:17
報告させていただきます。
NPTL -> LinuxThreads へ変更し、2ヶ月間問題なく動作しておりましたが 先日レスポンスが低下するという現象が発生致しました。 一度は解決したと思ったのですが。。。 top にてプロセスを見ると java の CPU 使用率が 99.9% になっておりました。 プログラム的に重い処理は特に走っておりません。 問題なのは gc のログを確認するところ full gc が頻発しているということです。 ----- 54512.824: [GC 246940K->201117K(436928K), 36.4871340 secs] 54551.533: [Full GC 288541K->153693K(436928K), 6.5452110 secs] 54559.952: [GC 241117K->187101K(436928K), 0.2990880 secs] 54561.730: [Full GC 274525K->201461K(436928K), 1.9945010 secs] 54565.006: [Full GC 288885K->225094K(436928K), 2.2233510 secs] 中略 54900.143: [Full GC 436927K->424246K(436928K), 2.9855000 secs] 54906.256: [Full GC 436923K->425334K(436928K), 2.3728340 secs] ----- jvmstat で確認してみましたが Old、New 領域共に FULL になっており GC 後もメモリが開放されていない ような感じに見えます。 現在、設定されている JAVA の起動オプションは以下の通りです。 export CATALINA_OPTS="-server -Xms512m -Xmx512m -XX:NewRatio=1 -XX:SurvivorRatio=1 -verbose:gc -XX:+PrintGCTimeStamps -Xloggc:/var/log/gc/gc.log" なお、catalina.out には OutOfMemory が出力されております。 ----- [Unloading class sun.reflect.GeneratedMethodAccessor789] [Unloading class sun.reflect.GeneratedMethodAccessor790] [Unloading class sun.reflect.GeneratedMethodAccessor791] org.apache.commons.dbcp.SQLNestedException: Connect failed, cause: java.lang.OutOfMemoryError org.apache.commons.dbcp.SQLNestedException: Connect failed, cause: java.lang.OutOfMemoryError org.apache.commons.dbcp.SQLNestedException: Connect failed, cause: java.lang.OutOfMemoryError java.lang.OutOfMemoryError org.apache.commons.dbcp.SQLNestedException: Connect failed, cause: java.lang.OutOfMemoryError java.lang.OutOfMemoryError java.lang.OutOfMemoryError 2007/04/17 16:54:32 org.apache.tomcat.util.threads.ThreadPool$ControlRunnable run 致命的: org.apache.jk.common.SocketConnection@1c4bcda を実行中に例外 (java.lang.OutOfMemoryError) をキャッチしたので、スレッドを終了します ----- 私的な見解は jk2 モジュールの辺か、javaの起動オプションの辺を 探れば何かわかるかもしれないと踏んでいるのですが。。。 今回の現象といままでの現象で違うところは、 CPU使用率が 100% であるということと、 GCが頻発しているというところです。 何かわかる方、ご教授いただければ幸いです。 宜しくお願い致します。 |