- PR -

CATALINA_OPTSで1024MB以上のメモリが割り当てられない

1
投稿者投稿内容
わか
常連さん
会議室デビュー日: 2003/12/14
投稿数: 47
お住まい・勤務地: 広島市
投稿日時: 2006-08-10 07:11
いつもお世話になります、わかです。
CATALINA_OPTS の設定方法について、識者の方からのアドバイスをいただければ幸いです。

<実現したいこと>
tomcat java-vm に、環境変数 CATALINA_OPTS を使ってメモリを1024MB以上割り当てたい

<環境>
Red Hat Enterprise Linux ES4
JDK 5.0 update 6
Apache Tomcat 5.5.17

稼働サーバではメモリを6GB搭載しています
# free にて確認

<試したこと>
環境変数 CATALINA_OPTS を下記のように設定しました
コード:
CATALINA_OPTS="-server -Xmx3096m -Xms1024m -Xss512k"


その後、tomcatの起動を試みたのですが、

Could not create the Java virtual machine.

と表示され、起動できませんでした。
CATALINA_OPTS を
コード:
CATALINA_OPTS="-server -Xmx1024m -Xms512m -Xss512k"


と変更すると、tomcat は問題なく起動できました。

-Xmx に 1024m 以上の値を設定するには、どのようにしたらよいのでしょうか。
アドバイス頂ければ幸いです。
せん
ぬし
会議室デビュー日: 2002/03/04
投稿数: 397
投稿日時: 2006-08-10 09:44
このような場合の検証方法は起動する値を少しずつ増やしてどこが駄目でどこ迄は
大丈夫なのか、をきちんと把握することが必要です。

今回の場合、目的である 3G が NG で、1G は OK だから 1G 以上は割り当てられない
という結論にいたっていますが、では、1.5G は? 2G は?

そのようにして確認していき、起動できなくなる点を見極めそのときに
なにがおきているのか、を確認するのがひつようではありませんか?

# もちろん、利用している VM のドキュメントを読んで使用上の制限が
# 無いかどうかを確認するのも大切です。
koe
大ベテラン
会議室デビュー日: 2003/07/13
投稿数: 198
投稿日時: 2006-08-10 09:47
Sun JDK 5.0のjavaコマンドのマニュアルによると
引用:

-Xmxn

Linux プラットフォームでは、およその上限は、2000m からオーバーヘッドの量を差し引いたサイズになります。


だそうです。
VMの制限により、3096m(4096mの間違い?)は設定できないそうです。
1024mよりもう少し多めには設定できそうですが。
progman
大ベテラン
会議室デビュー日: 2005/06/08
投稿数: 227
投稿日時: 2006-08-10 11:07
>>Sun JDK 5.0のjavaコマンドのマニュアルによると
ということは
CATALINA_OPTSでテストするより単純に
java -Xmx数値M クラス名
でテストしたほうが簡単でわかりやすいですね

わか
常連さん
会議室デビュー日: 2003/12/14
投稿数: 47
お住まい・勤務地: 広島市
投稿日時: 2006-08-10 11:55
みなさま、アドバイスありがとうございます。

java -Xmx数値m -version
で、vm の起動可否を測定してみました。

その結果
# java -Xmx2644m -version
java version "1.5.0_07"
Java(TM) 2 Runtime Environment, Standard Edition (build 1.5.0_07-b03)
Java HotSpot(TM) Server VM (build 1.5.0_07-b03, mixed mode)

# java -Xmx2645m -version
Error occurred during initialization of VM
Could not reserve enough space for object heap
Could not create the Java virtual machine.

となり、私の環境では
-Xmx2644m が vm 起動可能な上限のようです。

これ以上のメモリ量で vm を起動されている方、おられないでしょうか。
# 可能な限り vm の最大メモリ量を増やした方が、
# 動作させる java アプリのパフォーマンスは向上する、と考えていますが、
# そもそもこの考え自体に誤りがあるのでしょうか。

識者の方、引き続きアドバイス頂ければ幸いです。
holic
ベテラン
会議室デビュー日: 2004/08/24
投稿数: 74
投稿日時: 2006-08-10 13:59
引用:

となり、私の環境では
-Xmx2644m が vm 起動可能な上限のようです。



1G/3G メモリモデルでは、ユーザプロセスのメモリ割り当ての最大値は 3G なので、まあそのへんでしょう。

このあたりをご参考に。
http://opentechpress.jp/kernel/03/07/10/034238.shtml


引用:

これ以上のメモリ量で vm を起動されている方、おられないでしょうか。
# 可能な限り vm の最大メモリ量を増やした方が、
# 動作させる java アプリのパフォーマンスは向上する、と考えていますが、
# そもそもこの考え自体に誤りがあるのでしょうか。

識者の方、引き続きアドバイス頂ければ幸いです。



こちらは、Java アプリの作り方によるとしか言いようがないです。
向上することもあれば、悪化することもあります。
小僧
ぬし
会議室デビュー日: 2002/08/14
投稿数: 526
投稿日時: 2006-08-10 15:05
メモリが潤沢にあるサーバならばTomcat1つではなく、
ポート番号を変えて2つ以上のTomcatを起動させて
セッションレプリケーション+ロードバランス
させて、1つあたり1G程度のメモリを割り当てた方が
バランスがいいのではないでしょうか、耐障害性
なども上がるでしょうし。
1

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