Ubuntu 9.04でTomcat 6のJavaヒープオプション(-Xmxなど)を設定する場所


36

Ubuntu 9.04のtomcat6パッケージを使用してTomcatを実行しています。これにより、jsvcを使用してTomcatからデーモンが作成されます。-XmxTomcatのようなJavaヒープオプションを設定する適切な方法を知りたいです。構成が最もスタイル的に正しい場所、およびUbuntuパッケージの更新によって上書きされる可能性が最も低い場所に配置したいと思います。

私が今見ているオプション:

  • のどこかにハードコーディングします/etc/init.d/tomcat6
  • のどこかにハードコーディングします/usr/share/tomcat6/bin/catalina.sh
  • 行を作成/usr/share/tomcat6/bin/startup.shして、CATALINA_OPTSに目的のフラグを設定し、CATALINA_OPTSを環境変数としてエクスポートします。(これはに拾われるように見えますcatalina.sh。)

最後のオプションは最高のオプションのように聞こえますが、Tomcat起動スクリプトでJavaのヒープスペース増やすことで(理由の説明なしで)提唱されています。しかし、私はセカンドオピニオンを得たいと思いました。誰もがより良い方法がないことを確認したいですか?

回答:


37

少なくともUbuntu 10.04では、/ etc / init.d / tomcat6が/ etc / default / tomcat6をソースします(存在する場合)。それは私が私のオーバーライドを置くところです、そして、私はそれが一般にそのような変更をするための「承認された」方法であると信じています。


7
/ etc / default / tomcat6は適切な場所です
アマラ

+1構成は/etc、可能な場合は常に行う必要があります。
マーカスダウニング

2
CentOSの上で、私が見つけた場所は/etc/tomcat6/tomcat6.confだった
khylo

1
CentOS 6.4では/etc/tomcat6/tomcat6.conf、大きなファイルであり、個人的なカスタマイズをそこに入れたくなかったので、それを作成し$CATALINA_HOME/bin/setenv.sh、ソースしました/usr/sbin/tomcat6。これがCentOSユーザーに役立つことを願っています(はい、元の質問はUbuntuに関するものでした)。
DuffJ

@khyloうん、理解するのに少し時間がかかった。CentOSでは/etc/init.d/tomcat6が/ usr / sbin / tomcat6を呼び出しており、catalina.shを呼び出しているのではなく、tomcatブートストラップクラスを直接呼び出しているようです(Ubuntuの/etc/init.d/tomcat6ではなく)catalina.shを呼んでいる
エランメダン

16

インストールのbinディレクトリを見ると、catalina.shまたは.batスクリプトが表示されます。これらを見ると、環境変数を設定するためにsetenv.shまたはsetenv.batスクリプトが存在する場合、それぞれ実行することがわかります。関連する環境変数は、catalina.sh / batの上部にあるコメントに記載されています。それらを使用するには、たとえば、次の内容のファイル$ CATALINA_HOME / bin / setenv.shを作成します

export JAVA_OPTS="-server -Xmx512m"

Windowsの場合、setenv.batに次のようなものが必要です。

set JAVA_OPTS=-server -Xmx768m

これはtomcat 5.5から7に当てはまります。元のanswear https://stackoverflow.com/questions/286007/how-to-tune-tomcat-5-5-jvm-memory-settings-without-using-the-configuration-progra


1
/ etc / default /を含まないシステム、たとえばFreeBSDでうまく機能します。
vadipp

7

JAVA_OPTSのようなものが用意されており、コメントを解除するのを待っている/etc/tomcat6/tomcat6.confを探します(ただし、もしあれば、UbuntuではなくCentosを使用しています)。

# System-wide configuration file for tomcat6 services
# This will be sourced by tomcat6 and any secondary service
# Values will be overridden by service-specific configuration
# files in /etc/sysconfig
#
# Use this one to change default values for all services
# Change the service specific ones to affect only one service
# (see, for instance, /etc/sysconfig/tomcat6)
#
...
#JAVA_OPTS="-Xminf0.1 -Xmaxf0.3"

4
これは、TomcatのCentOS / yum / RPMバージョンでは正しいようです。Ubuntu / apt-getパッケージの場合、setenv.shが正しい方法です-Eran
Medan

はい、KCDは正しいです。centOStomcat6.confがうまく機能するからです。コマンドps aux | grep tomcatは、値iが設定されたパラメーターを表示します。
マニカンダンアルナチャラム

2

私がこれまでに見つけた最もエレガントな方法は、/ etc / init.d / tomcat6を編集し、これをファイルの先頭に追加することです。

# local config settings
JAVA_OPTS="-Xms5000m -Xmx13000m

私の質問で説明した他のオプションは機能しないようです。スクリプトを研究し、さらに実験を重ねた結果、/ usr / share / tomcat6 / bin / catalina.shと/usr/share/tomcat6/bin/startup.shが、tomcat6 Ubuntuパッケージを使用したTomcatの起動に何らかの役割を果たすのではないかと思います。代わりに; /etc/init.d/tomcat6は、catalina.sh / startup.shによって通常行われる可能性のある作業を完全に置き換えます。

将来のパッケージアップデートでこれらの設定オプションが失われるのをまだ少し心配していますが、それが発生した場合、それらを復元するのは非常に簡単だと思います。


これは、Tomcatを実行するユーザーの.bashrcで設定(エクスポート)できますか?[恐ろしい文法を言い訳してください] Tomcatパッケージなどの更新後も存続します。initの "run-as"機能は、そのユーザーの通常のシェルを起動し、割り当てを取得すると想定しています。howtogeek.com/howto/linux/installing-tomcat-6-on-ubuntu
David J. Liszewski
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.