本番用環境でWEBの画面が突然表示されなくなった。
TomcatのログをチェックしたところOut Of Memoryが発生していた。
そういえば、今のところヒープメモリの設定をした記憶がない。
インフラ側で設定されてあると思っていたので。
ヒアリングしたところ、誰も設定していないとのこと。
それなりにデータ投入してテストしていたのに普通に動いていた。ある意味奇跡?
このプロジェクト、PMの仕切り方・タスクの振り方・適切な体制の構築すべてが曖昧だったり、無理やりだったので、
度々このような漏れのようなことが発生する。
対策としてヒープメモリの設定を暫定ではあるが、明示的に設定することとデフォルト値の確認をする
ことになった。
設定自体は $CATALINA_HOME\binにsetenv.shを配置して、そのファイルに-Xmx -Xms -Xss 等を設定。
例
JAVA_OPTION="-Xms2048m -Xmx4096m -Xss4m"
このファイルを置いておくと、start.sh→catalina.shで読み込まれる。
また、デフォルト値ですが、以下のページに記載されている。
http://java.sun.com/j2se/1.5.0/ja/docs/ja/guide/vm/gc-ergonomics.html
なんでもJAVA5.0から変更されている。
今回サーバクラスのマシンだったので、VMが自動でOSの種類等を検知して設定されるようです。
最小は
マシンの物理メモリの 1/64 か、妥当な最小サイズかの大きい方
最大は
物理メモリの 1/4 か、1GB かの小さい方
とのことなので、最大が1Gで動作していたと思われる。
TomcatのログをチェックしたところOut Of Memoryが発生していた。
そういえば、今のところヒープメモリの設定をした記憶がない。
インフラ側で設定されてあると思っていたので。
ヒアリングしたところ、誰も設定していないとのこと。
それなりにデータ投入してテストしていたのに普通に動いていた。ある意味奇跡?
このプロジェクト、PMの仕切り方・タスクの振り方・適切な体制の構築すべてが曖昧だったり、無理やりだったので、
度々このような漏れのようなことが発生する。
対策としてヒープメモリの設定を暫定ではあるが、明示的に設定することとデフォルト値の確認をする
ことになった。
設定自体は $CATALINA_HOME\binにsetenv.shを配置して、そのファイルに-Xmx -Xms -Xss 等を設定。
例
JAVA_OPTION="-Xms2048m -Xmx4096m -Xss4m"
このファイルを置いておくと、start.sh→catalina.shで読み込まれる。
また、デフォルト値ですが、以下のページに記載されている。
http://java.sun.com/j2se/1.5.0/ja/docs/ja/guide/vm/gc-ergonomics.html
なんでもJAVA5.0から変更されている。
今回サーバクラスのマシンだったので、VMが自動でOSの種類等を検知して設定されるようです。
最小は
マシンの物理メモリの 1/64 か、妥当な最小サイズかの大きい方
最大は
物理メモリの 1/4 か、1GB かの小さい方
とのことなので、最大が1Gで動作していたと思われる。