- PR -

Tomcat起動時に必要なメモリ量は?

1
投稿者投稿内容
トラジャ
ベテラン
会議室デビュー日: 2002/12/05
投稿数: 75
投稿日時: 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

山本 裕介
ぬし
会議室デビュー日: 2003/05/22
投稿数: 2415
お住まい・勤務地: 恵比寿
投稿日時: 2005-01-15 02:09
環境、特に JVM によって値は変わってくると思いますので、ヒープ容量やパーマネント領域のサイズを増減させて起動可能なしきい値を見つけてはいかがでしょうか。
トラジャ
ベテラン
会議室デビュー日: 2002/12/05
投稿数: 75
投稿日時: 2005-01-16 17:07
インギさん、ありがとうございます。

どうやらVPS(VIrtual Private Server)サーバーというのは、各VPS契約毎にプロセス数とメモリ使用量の上限値がプラン毎に設定されているようです。知らなかったのは私だけでしょうか。

私の契約は一番安いプランでしたので、最大プロセス数が60まで、メモリ上限値は124Mとなっているそうです。

Tomcatを起動させるとそれだけでプロセス数が最大値を超えてしまっていました。

VPSサーバーは安価で専用サーバーのようにroot権限が持てるので魅力的でしたが、どうもJava環境を構築するにはやはり難しいのでしょうかね。
山本 裕介
ぬし
会議室デビュー日: 2003/05/22
投稿数: 2415
お住まい・勤務地: 恵比寿
投稿日時: 2005-01-16 17:57
Tomcat を起動してもプロセスは1つでしょう。スレッドの数も数えられていると言うことでしょうか?
なのであればスレッド数、ヒープサイズ、パーマネント領域のサイズを調整してみてはいかがでしょうか。
起動の上ちょっとしたアプリケーションをデプロイするのに124MBも食い尽くすことはないと思います。
Kissinger
ぬし
会議室デビュー日: 2002/04/30
投稿数: 428
お住まい・勤務地: 愛知県
投稿日時: 2005-01-16 18:04
Tomcatって 60もプロセスを立ち上げるんでしょうかね。

私はプロセス1個で複数スレッドだと理解してました。

あと、メモリ制限 124Mという環境で使うなら、
どうせ時間あたりのアクセスもそう多くはないでしょ
うから、Apacheをやめて静的コンテンツも Tomcatで
サービスすれば、プロセス、メモリ共節約できるのでは
ないでしょうか。

root権限で走っている httpdとか miniserv.plが必要
なのかも気になります。
トラジャ
ベテラン
会議室デビュー日: 2002/12/05
投稿数: 75
投稿日時: 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です。
おばけ
ぬし
会議室デビュー日: 2002/11/14
投稿数: 609
お住まい・勤務地: 東京都江東区
投稿日時: 2005-01-16 19:59
Linuxでは、スレッドが「スレッドコンテキスト以外を親プロセスと共有する特殊な
子プロセス」として実装され、プロセスとしてスケジューリングされているんですよ。
だから、一応プロセスとして見えちゃうんです。でも、いわゆるスレッドのことです。
詳しくはこちらの下の方にある「Linuxスレッドの実装」をご覧下さい。


[ メッセージ編集済み 編集者: おばけ 編集日時 2005-01-16 20:02 ]
1

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