Tomcat6とOpenJDKとCentOSと
引き続きServersMan@VPSについて。概ね機嫌よく使っています。とは言っても、環境設定が中心というか、初期化ばっかりやっているのですが。
初期化してみよう
MyDTIからログインして、契約中サービス→確認・変更→各種初期化とボタンを押していくと、サーバの初期化が出てきます。そこでOSとパッケージを選らんでサーバの初期化ボタンを押すだけ。手軽なもんなので、体当たり的に設定をかえたりしています。シンプルセットへの初期化は5分前後で終わりました。早い。
エンジニアセットからシンプルセットに変えても、またエンジニアセットにすれば元通りになります。シンプルセットにすると一旦消えるサーバ管理ツールとかもちゃんと戻りました。
シンプルセットとJVM
前回はよく判らなかったので、Standardプランのエンジニアセットにしていたのですが、よく考えると用途が限られているので、色々あるよりも無い方がいいと思いました。そう思ってしまったので、シンプルセットに初期化することにしました。
エンジニアセットだとHotSpot*1が入っているのですが、シンプルセットには入っていません。自分でインストールしなければならないのですが、yumでHotSpotは出て来てくれません。ちょっと調べてみたら少し手間そうだったのと、いい機会なのでOpenJDKを触ってみることにします。OpenJDKは特に設定とか無くインストールできました。それから再びTomcat6のインストール。エンジニアセットだとTomcat5が最初から入っていたのですが、Tomcat6を混在させても特に問題なく動かせました。勿論片方ずつ。今回はTomcat5は入っていないので特に気にしない感じで。
OpenJDKでのTomcat6の起動と停止
OpenJDKとTomcat6をインストールしたので、Tomcat6を起動します。特に問題なさそうです。起動したし、とりあえず停止。問題ありそうです。
# service tomcat6 start Starting tomcat6: [ OK ] # service tomcat6 stop Stopping tomcat6: [FAILED] #
tomcat6が停止しないなど。いいやkillっとけ…
- 環境が違う:エンジニアセットとシンプルセット(設定も色々違う)
- JVMが違う:HotSpotとOpenJDK
シンプルセット→エンジニアセットの変更に興味があったことも手伝って、さくっとサーバの初期化をすることにしました。色々作業した後では初期化するのも躊躇しそうなので、今のうちにやりまくっておこうと言う作戦です。
体当たり調査
と、言うことでエンジニアセットに変更。10分弱で出来ました。初期化完了後、Tomcat6のインストールを行い、起動/停止を行ってみます。問題なし。ではOpenJDKをインストールし、Tomcat6の起動/停止をすると、同様に失敗しました。つまるところOpenJDKを使用した場合の問題と当たりをつけます。次にOpenJDKでTomcat5の起動/停止をしてみましたが、これは成功。もちろんHotSpotでTomcat5の起動/停止は成功しました。この過程でJavaの切り替えのコマンドを知ったのでメモ。インストールしているJavaの一覧が表示され、振られている番号を入力するだけで切り替えられます。便利。
# update-alternatives --config java
うーん…とりあえず現状はOpenJDK→Tomcat5起動停止OK、Tomca6起動OK停止NG、HotSpot→Tomcat5起動停止OK、Tomcat6起動停止OK
ログを見る
「体当たりしていないでいい加減ログ見ろ」と脳みそが囁いて来たので*3、仕方なくログを開く事にしました。ログは /usr/share/tomcat6/logs からいけましたのでそれで。眺めると、明らかに怪しげなものがあります。
Error occurred during initialization of VM
Could not reserve enough space for object heap
Could not create the Java virtual machine.
OpenJDKだとstopのJavaVM作るのに失敗する(heapたんねーよ!っての)。HotSpotならいける。オプションだけでいけそうなんだがなー。
# free total used free shared buffers cached Mem: 1048576 18656 1029920 0 0 0 -/+ buffers/cache: 18656 1029920 Swap: 0 0 0 # service tomcat6 start Starting tomcat6: [ OK ] # free total used free shared buffers cached Mem: 1048576 662000 386576 0 0 0 -/+ buffers/cache: 662000 386576 Swap: 0 0 0 # service tomcat6 stop Stopping tomcat6: [FAILED]
見た感じ、512MBと言う感じでしょうか。ServersMan@VPSのStandardプランはメモリ最大1GBですが、これはあくまで最大。保証サイズは512MBになります。さすがにTomcat6だけで512MB食われると厳しいものがあるなーとか思いながら、ふとJVMを起動してみました。
# java -version Error occurred during initialization of VM Could not reserve enough space for object heap Could not create the Java virtual machine.
さすがに驚きました。Version表示すら出来ません。そりゃ停止もできませんわ。と言うことで、JAVA_OPTSに"-Xmx128m"とか入れて停止。これで素直に停止してくれました。
OpenJDKの初期メモリサイズがどうなっているのかはとりあえず置いておきます。Tomcat6自体はメモリ馬鹿食いするわけでもなく、128MBでも十分動いています。Tomcatの停止に失敗した場合は、停止時のメモリサイズを指定してあげればうまくいくかもしれませんよ的な締めにしておこうと思います。