- - PR -
Tomcat起動時に必要なメモリ量は?
1
投稿者 | 投稿内容 |
---|---|
|
投稿日時: 2005-01-14 21:59
みなさん、よろしくお願いします。
某社レンタルサーバーのVPS(VIrtual Private Server)を利用して Tomcat5.0.28によるWebシステムを構築中です。OSはFedora Core1です。 通常のホスティングサーバーでは自由にJava環境を構築できないため、格安のVPSを 見つけて喜んでおりました。さっそく、JDKやTomcatをインストールしていくつかの Webアプリを動かしておりました。 ところが、昨日から急にTomcatが起動できなくなってしまいました。"startup.sh" を実行するといつものように環境変数が表示されて一見問題なく起動しているかの ように見えるのですが、"top"コマンドでプロセスを確認すると実際には起動して いません。 Exceptionエラーや"server.xml"設定のエラー等は何も表示されません。 ちなみに、起動していない状態で"shutdown.sh"を実行すると以下のようなエラー メッセージが表示されます。 rror occurred during initialization of VM Could not reserve enough space for object heap これは、JVMが十分なメモリを確保できないということでしょうか?できれば、TomcatとメールサーバーのJamesを稼働させたいのですが、そのためにはどれだけのメモリを確保する必要があるのでしょうか? よろしくお願いいたします。 参考までに、"top"コマンド実行時の内容は以下のとおりです。 27 processes: 26 sleeping, 1 running, 0 zombie, 0 stopped CPU states: cpu user nice system irq softirq iowait idle total 0.0% 0.0% 0.0% 0.0% 0.0% 0.0% 400.0% cpu00 0.0% 0.0% 0.0% 0.0% 0.0% 0.0% 100.0% cpu01 0.0% 0.0% 0.0% 0.0% 0.0% 0.0% 100.0% cpu02 0.0% 0.0% 0.0% 0.0% 0.0% 0.0% 100.0% cpu03 0.0% 0.0% 0.0% 0.0% 0.0% 0.0% 100.0% Mem: 3813188k av, 3777756k used, 35432k free, 0k shrd, 510848k buff 1797952k active, 1307344k inactive Swap: 4016232k av, 3724292k used, 291940k free 1306992k cached PID USER PRI NI SIZE RSS SHARE STAT %CPU %MEM TIME CPU COMMAND 1 root 8 0 456 432 408 S 0.0 0.0 0:03 2 init 7618 root 9 0 548 520 468 S 0.0 0.0 0:00 2 syslogd 8355 root 9 0 848 816 732 S 0.0 0.0 0:00 2 xinetd 8738 root 9 0 964 888 860 S 0.0 0.0 0:02 2 spamass-milter 9890 mail 9 0 21024 2420 2416 S 0.0 0.0 0:00 0 spamd 10371 root 17 0 7740 5908 5880 S 0.0 0.1 0:05 0 httpd 10690 root 8 0 580 548 508 S 0.0 0.0 0:00 0 crond 11012 root 9 0 688 592 588 S 0.0 0.0 0:00 0 saslauthd 11360 root 10 0 5712 2992 2608 S 0.0 0.0 0:02 1 miniserv.pl 11588 apache 9 0 8108 6552 6200 S 0.0 0.1 0:00 0 httpd 11620 apache 9 0 8080 6396 6128 S 0.0 0.1 0:00 0 httpd 11653 root 10 0 6068 3044 2644 S 0.0 0.0 0:02 0 miniserv.pl 14338 apache 9 0 8080 6532 6212 S 0.0 0.1 0:00 2 httpd 3619 root 9 0 1528 1392 1308 S 0.0 0.0 0:01 3 sshd 14102 postgres 11 0 1044 964 896 S 0.0 0.0 0:00 0 postmaster 14104 postgres 9 0 1036 908 896 S 0.0 0.0 0:00 1 postmaster 14105 postgres 9 0 1124 976 896 S 0.0 0.0 0:00 2 postmaster 30211 root 11 0 2616 2560 2136 S 0.0 0.0 0:00 3 sshd 32354 root 9 0 1188 1188 976 S 0.0 0.0 0:00 1 bash 23172 root 9 0 856 856 696 S 0.0 0.0 0:00 2 su 23173 tomcat 15 0 1152 1152 968 S 0.0 0.0 0:00 2 bash 19329 root 10 0 2176 2128 1976 S 0.0 0.0 0:00 0 sshd 19682 tomcat 16 0 2404 2360 2148 S 0.0 0.0 0:00 0 sshd 19780 tomcat 7 0 1040 1040 892 S 0.0 0.0 0:00 2 bash 31458 tomcat 16 0 1020 1020 740 R 0.0 0.0 0:00 2 top |
|
投稿日時: 2005-01-15 02:09
環境、特に JVM によって値は変わってくると思いますので、ヒープ容量やパーマネント領域のサイズを増減させて起動可能なしきい値を見つけてはいかがでしょうか。
|
|
投稿日時: 2005-01-16 17:07
インギさん、ありがとうございます。
どうやらVPS(VIrtual Private Server)サーバーというのは、各VPS契約毎にプロセス数とメモリ使用量の上限値がプラン毎に設定されているようです。知らなかったのは私だけでしょうか。 私の契約は一番安いプランでしたので、最大プロセス数が60まで、メモリ上限値は124Mとなっているそうです。 Tomcatを起動させるとそれだけでプロセス数が最大値を超えてしまっていました。 VPSサーバーは安価で専用サーバーのようにroot権限が持てるので魅力的でしたが、どうもJava環境を構築するにはやはり難しいのでしょうかね。 |
|
投稿日時: 2005-01-16 17:57
Tomcat を起動してもプロセスは1つでしょう。スレッドの数も数えられていると言うことでしょうか?
なのであればスレッド数、ヒープサイズ、パーマネント領域のサイズを調整してみてはいかがでしょうか。 起動の上ちょっとしたアプリケーションをデプロイするのに124MBも食い尽くすことはないと思います。 |
|
投稿日時: 2005-01-16 18:04
Tomcatって 60もプロセスを立ち上げるんでしょうかね。
私はプロセス1個で複数スレッドだと理解してました。 あと、メモリ制限 124Mという環境で使うなら、 どうせ時間あたりのアクセスもそう多くはないでしょ うから、Apacheをやめて静的コンテンツも Tomcatで サービスすれば、プロセス、メモリ共節約できるのでは ないでしょうか。 root権限で走っている httpdとか miniserv.plが必要 なのかも気になります。 |
|
投稿日時: 2005-01-16 19:08
プロセス数のカウントをどのようにしているのか不明ですが、
topコマンドをうつと、リストに表示されるのは一つのプロセスなのですが、ステータス表示部分では、プロセス数がTomcatの起動前と起動後で以下のようになってます。 起動前 23 processes: 22 sleeping, 1 running, 0 zombie, 0 stopped 起動後 66 processes: 65 sleeping, 1 running, 0 zombie, 0 stopped このプロセス数で制限されるのかもしれません。 ちなみにOSはFedora Core1です。 |
|
投稿日時: 2005-01-16 19:59
Linuxでは、スレッドが「スレッドコンテキスト以外を親プロセスと共有する特殊な
子プロセス」として実装され、プロセスとしてスケジューリングされているんですよ。 だから、一応プロセスとして見えちゃうんです。でも、いわゆるスレッドのことです。 詳しくはこちらの下の方にある「Linuxスレッドの実装」をご覧下さい。 [ メッセージ編集済み 編集者: おばけ 編集日時 2005-01-16 20:02 ] |
1