LoginSignup
0
0

More than 1 year has passed since last update.

Windowsサービスとして登録しているTomcatの使用メモリを変更する

Posted at

概要

Tomcatを使ったWebアプリケーション(Windowsサービスとして登録)で下記のエラーが出ていたため、メモリを増やしてみた。
試行錯誤した過程とともにその方法を書く。
java.lang.OutOfMemoryError: PermGen space

  • 環境・バージョン
    • Windows 10 Pro
    • Java7
    • Tomcat6

試行錯誤の過程

  1. setenv.batに設定を書いてみる(→サービスの場合うまくいかない)
  2. tomcat6w.exeをダブルクリックしてみる(→サービスの名前を変更している場合うまくいかない)
  3. うまくいった方法1(コマンドで・・・)
  4. うまくいった方法2(レジストリを・・・)

1.setenv.batに設定を書いてみる(→サービスの場合うまくいかない)

Tomcatを使ったWebアプリケーション(Windowsサービスとして登録)で下記のエラーが出ていた。

java.lang.OutOfMemoryError: PermGen space

Tomcatのメモリの設定の仕方を検索すると、
JavaVMの起動オプションでCATALINA_OPTSを設定するとか、
CATALINA_OPTSの設定をcatalina.batまたはsetenv.bat(catalina.batから呼ばれる)に書くとか出てくる。

Tomcatのフォルダ\bin\setenv.batを作成し、

bin\setenv.bat
set CATALINA_OPTS=-Dfile.encoding=UTF-8 -Xms3072m -Xmx3072m -XX:PermSize=256m -XX:MaxPermSize=256m -server

と書いてみるが、うまく反映されているように見えない。
どうやらWindowsサービスにしている場合はsetenv.batに書いても反映されないらしい。

2.tomcat6w.exeをダブルクリックしてみる(→サービスの名前を変更している場合うまくいかない)

Windowsサービスにしている場合、Tomcatのフォルダのbin\tomcat6w.exeを起動すると設定画面が開くという情報があり、
ダブルクリックしてみるが・・・
image.png
「指定されたサービスはインストールされたサービスとして存在しません。」
というエラーメッセージが表示される。
どうやらサービスの名前を「tomcat6」から変えているので開かないらしい。
また、設定画面を開いて設定変更するのもよいが、複数のクライアントに配布しているアプリケーションのため、できればバッチファイルをクリックしただけでメモリサイズの変更がされるようにしたい・・・。

3.うまくいった方法1(コマンドで・・・)

結局公式サイトにたどりつき・・・希望通りコマンドで設定を変えることができるようになった!

Apache Tomcat 6.0 Windows service HOW-TO
https://tomcat.apache.org/tomcat-6.0-doc/windows-service-howto.html

設定画面を表示するときは tomcat6w.exe //ES//[サービス名] ←「tomcat6」の後にwあり

(Tomcatのフォルダ)\bin\tomcat6w.exe //ES//[service-name]

設定を書き換えるときは tomcat6.exe //US//[サービス名] ←「tomcat6」の後にwなし

(Tomcatのフォルダ)\bin\tomcat6.exe //US//[service-name] ++JvmOptions="-Xms1024m" ++JvmOptions="-Xmx3072m" ++JvmOptions="-XX:PermSize=256m" ++JvmOptions="-XX:MaxPermSize=512m" --JvmMs=1024 --JvmMx=1024

↑ パラメータ名の前に「--」を付けると上書き、「++」を付けると追加になる
(何度も実行すると、実行するたびに追加されていく・・・)

4.うまくいった方法2(レジストリを・・・)

Daemon - Daemon : Procrun
https://commons.apache.org/proper/commons-daemon/procrun.html

このサイトの一番下に書いてあるが、レジストリを直接編集するという方法もある。

32bitOS

HKEY_LOCAL_MACHINE\SOFTWARE\Apache Software Foundation\ProcRun 2.0<ServiceName>\Parameters

64bitOS

HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Apache Software Foundation\ProcRun 2.0<ServiceName>

参考URL

Apache Tomcat 6.0 Windows service HOW-TO
https://tomcat.apache.org/tomcat-6.0-doc/windows-service-howto.html

Daemon - Daemon : Procrun
https://commons.apache.org/proper/commons-daemon/procrun.html

起動時のプロパティとオプションの設定
https://ja.confluence.atlassian.com/adminjiraserver/setting-properties-and-options-on-startup-938847831.html
→ここに全部書いてあった!

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0