- PR -

Tomcatのバーチャルホスト最大数について

1
投稿者投稿内容
F.Tanaka
会議室デビュー日: 2005/12/08
投稿数: 4
投稿日時: 2005-12-08 23:07
現在、Webサーバーの構築を行ってる所なんですが、TomcatのServer.xmlにバーチャルホスト<Host name="***** >を約70個以上定義すると、Tomcat起動後に下記のようなエラーでダウンしてしまいます。
(ちなみにTopコマンドで確認できたプロセス数は740程度までです。)
察するに、メモリ不足で新しいスレッドが生成できない、と言っているようですが、解決の目処が立っていません。
catalina.shでJavaに割り当てるメモリサイズの調節も行ったんですけど、効果なしでした。
(JAVA_OPTS="-server -Xnoclassgc -Xmx1024M -Xms1024M -Xss128K"についてはパラメータ値を調整)
同じような状況・問題が発生したようなことがあれば、ヒントをご教授願います。
もしくはTomcatで利用できるバーチャルホストに上限があるのでしょうか?

ちなみにサーバー環境は
DELLPowerEdge1750 - Xeon 3.0GHz - メモリ:3GB - HD:140GB(RAID1)
TurboLinux8+Apache_1.3.26+ssl_1.48+Tomcat4.0.4+PostgreSQL 7.2.1+j2sdk 1.4.0_01の構成です。


↓以下、Tomcatのcatalicna.outより *******************************************************************************
サービス Tomcat-Standalone を起動します
Apache Tomcat/4.1.27
Exception during startup processing
java.lang.reflect.InvocationTargetException
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:324)
at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:203)
Caused by: java.lang.OutOfMemoryError: unable to create new native thread
at java.lang.Thread.start(Native Method)
at org.apache.catalina.startup.HostConfig.threadStart(HostConfig.java88)
at org.apache.catalina.startup.HostConfig.start(HostConfig.java22)
at org.apache.catalina.startup.HostConfig.lifecycleEvent(HostConfig.java:358)
at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:166)
at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1196)
at org.apache.catalina.core.StandardHost.start(StandardHost.java38)
at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1188)
at org.apache.catalina.core.StandardEngine.start(StandardEngine.java:347)
at org.apache.catalina.core.StandardService.start(StandardService.java:497)
at org.apache.catalina.core.StandardServer.start(StandardServer.java:2190)
at org.apache.catalina.startup.Catalina.start(Catalina.java:512)
at org.apache.catalina.startup.Catalina.execute(Catalina.java:400)
at org.apache.catalina.startup.Catalina.process(Catalina.java:180)
... 5 more
Exception in thread "main" java.lang.OutOfMemoryError: unable to create new native thread
at java.lang.Thread.start(Native Method)
at java.lang.Shutdown.runHooks(Shutdown.java:126)
at java.lang.Shutdown.sequence(Shutdown.java:165)
at java.lang.Shutdown.exit(Shutdown.java:210)
at java.lang.Runtime.exit(Runtime.java0)
at java.lang.System.exit(System.java13)
at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:208)
↑以上エラーログ *******************************************************************************

TurboLinuxなのか、Tomcatなのか、JavaVMなのか、関連性の有無そのものが確認できていない状態ですので、こちらに投稿させていただきました。
以上、よろしくお願いいたします。

山本 裕介
ぬし
会議室デビュー日: 2003/05/22
投稿数: 2415
お住まい・勤務地: 恵比寿
投稿日時: 2005-12-09 00:27
BEAのサポートパターンが参考になるかと。
・BEA トラブルシューティング ガイド サポートパターン > メモリ不足とメモリ リークに関する問題の調査
http://www.beasys.co.jp/cs/support_news/product_troubleshooting/Investigating_Out_of_Memory_Memory_Leak_Pattern.html
F.Tanaka
会議室デビュー日: 2005/12/08
投稿数: 4
投稿日時: 2005-12-12 19:49
ご回答ありがとうございます。
週に一度のみ本件に関する作業を行っておりますので、ご返答が遅くなってしまいました。すみません。

JVMがヒープを使い切らないうちにダウンする状態でした。
断片化のような気がしますので、JVMベンダへ問い合わせてみます。

質問では70程度の仮想ホストとしておりましたが、実際には、仮想ホストを1サーバ上に100立てる必要があります。やはり無理なのでしょうか・・・

※ちなみに70ホストまでは、Tomcatのcatalina.shのJAVA_OPTSのXmx/Xmsサイズを256〜384MB程度にしてやれば稼動しました。やっぱりJVMのメモリの問題でしょうか・・・

以上です。
山本 裕介
ぬし
会議室デビュー日: 2003/05/22
投稿数: 2415
お住まい・勤務地: 恵比寿
投稿日時: 2005-12-12 20:04
j2sdk 1.4.0_01 はもうサポート終了していませんか?
まず最新版にアップデートして検証してはいかがでしょう。
F.Tanaka
会議室デビュー日: 2005/12/08
投稿数: 4
投稿日時: 2005-12-12 22:40
>j2sdk 1.4.0_01 はもうサポート終了していませんか?
>まず最新版にアップデートして検証してはいかがでしょう。

Javaのバージョンアップに伴ってアプリケーションに影響がないか
が気になってやらなかったのですが、今のままでは稼動すらしないので
早速1.4.2_10へバージョンアップしてみました。
結果としては同じ結果(Tomcatが起動中にダウン・エラー内容も同じ)になりました。

とりあえず、JAVA_OPTSに-verbosegc.txtを追記して実行したところ下記の内容のエラーが出力されました。やはりヒープを使い切る前に停止しているような気がします・・・


以下、ログ
サービス Tomcat-Standalone を起動します
Apache Tomcat/4.1.27
[GC 104959K->8627K(511232K), 0.0746540 secs]
[GC 113584K->14886K(511232K), 0.0958990 secs]
[GC 119846K->21188K(511232K), 0.0816130 secs]
[GC 126148K->27636K(511232K), 0.0739930 secs]
[GC 132589K->33821K(511232K), 0.1106710 secs]
[GC 138781K->40082K(511232K), 0.0671800 secs]
[GC 145042K->46589K(511232K), 0.1048850 secs]
[GC 151549K->52864K(511232K), 0.1114050 secs]
[GC 157824K->59047K(511232K), 0.0667390 secs]
[GC 164007K->65423K(511232K), 0.0997580 secs]
[GC 170383K->71759K(511232K), 0.1014560 secs]
[GC 176719K->78180K(511232K), 0.1022860 secs]
[GC 183140K->83785K(511232K), 0.0960530 secs]
[GC 188745K->89425K(511232K), 0.0954980 secs]
[GC 194385K->94919K(511232K), 0.0892450 secs]
[GC 199879K->100484K(511232K), 0.0898070 secs]
[GC 205444K->106200K(511232K), 0.0911200 secs]
[GC 211160K->111695K(511232K), 0.0901730 secs]
[GC 216655K->117241K(511232K), 0.0906580 secs]
[GC 222201K->122954K(511232K), 0.0901690 secs]
[GC 227914K->128450K(511232K), 0.0900020 secs]
[GC 233410K->133927K(511232K), 0.0903430 secs]
[GC 238887K->139726K(511232K), 0.0908060 secs]
[GC 244686K->145214K(511232K), 0.0904010 secs]
[GC 250174K->150648K(511232K), 0.0906350 secs]
[GC 255608K->156501K(511232K), 0.0934230 secs]
[GC 261461K->161986K(511232K), 0.0920270 secs]
[GC 266946K->167416K(511232K), 0.0973010 secs]
[GC 272376K->173144K(511232K), 0.0950300 secs]
[GC 278104K->178750K(511232K), 0.0919360 secs]
[GC 283710K->184178K(511232K), 0.0939010 secs]
[GC 289138K->190340K(511232K), 0.0958740 secs]
[GC 295300K->196503K(511232K), 0.0992850 secs]
[GC 301463K->202516K(511232K), 0.1022660 secs]
Exception during startup processing
・・・(以下同様)

山本 裕介
ぬし
会議室デビュー日: 2003/05/22
投稿数: 2415
お住まい・勤務地: 恵比寿
投稿日時: 2005-12-13 00:17
確かにヒープを使い切っている様子はありませんね。
コンパクション(ヒープフラグメントの解消処理)に関連する問題のように見えます。
JRockit を使ってみてはいかがでしょう。
http://commerce.bea.com/products/weblogicjrockit/1.4.2/142_08.jsp
http://commerce.bea.com/products/weblogicjrockit/5.0/jr_50.jsp
F.Tanaka
会議室デビュー日: 2005/12/08
投稿数: 4
投稿日時: 2005-12-13 13:36
JRockitをインストールしてみました。
と言うか、インストールできませんでした。(バイナリの実行中に停止してしまいました。)
現状解決への道のりが長そうなので、仮想ホスト50×2台構成に再構築することにしました。
いろいろとご意見ありがとうございました。(勉強になりました。)

以上
1

スキルアップ/キャリアアップ(JOB@IT)