X

An Oracle blog about WebLogic Channel

WebLogic Serverの起動・停止スクリプトを極める

WebLogic勉強会 通信

WebLogic Serverファンの皆様、こんにちは、WebLogic Server勉強会通信を担当させていただくことになりました。
勉強会で取り上げたセッション内容や質問、それに関連技術情報をお伝えします。

今回は2013年1月24日に開催された「第32回WebLogic Server勉強会@東京」、山田 貴裕氏の「起動・停止スクリプトを極める」セッションをレポートします。スクリプトを使用したWebLogic Serverの起動・停止の仕組みについて基本的な部分から応用テクニックをお話しいただきました。本レポートでは効果的なポイントや注意点を中心にまとめています。

それから今回のセッションに関連した体験談を募集中です。起動・停止スクリプトの運用体験談をWebLogic Server勉強会のLightning Talksセッションで発表していただけませんか?(日本オラクル Fusion Middleware事業統括本部 佐々木 政和)

「起動・停止スクリプトを極める」


伊藤忠テクノソリューションズ株式会社ソフトウェアサービス本部ミドルウェアサービス部の山田 貴裕氏の「起動・停止スクリプトを極める」セッションを振り返ってみましょう。

意外と奥が深いWebLogic Serverのアプリケーション起動と停止の仕組み

伊藤忠テクノソリューションズ
Oracle ACEの山田 貴裕氏

普段、何気なく実行しているstartWebLogic.sh、stopWebLogic.shなどのシェルですが、複数のシェルで構成されており、コンフィグレーションウィザードでドメインや管理サーバを作成すると環境にあったパラメータが組み込まれたものが作成されます。そのままでもすぐに管理サーバを起動することができますが、一歩突っ込んで中身を調べてみよう、というのが本セッションの目標です。



仕組みを理解することで、期待通りに動かない場合の対処方法を学んだり、システム環境やアプリケーションの要件用にカスタマイズする拡張ポイントや注意点を身につけることができます。シェルスクリプトのコーディング規約をおさらいしたり、テクニックを学ぶことにも役立ちます。




ポイントおよび注意点


1. まず起動・停止スクリプトの構造を理解することが重要です。$DOMAIN_HOME, $DOMAIN_HOME/bin, $WL_HOME/common/binの下にそれぞれスクリプトが配置されているので、この階層をイメージしてカスタマイズしてください。













2. ヒープメモリ領域の設定はUSER_MEM_ARGS環境変数で行います。WebLogic Server10.3.3以降ではstopWebLogic.sh内から呼ばれるWLSTのメモリー領域はsetDomainEnv.shで指定したUSER_MEM_ARGSが使用されます。WLST実行時に大きなメモリは不要なので、このシェル内の変数を大きくするとリソースの無駄になりますので注意してください。WebLogic Server本体のヒープサイズはインスタンス単位の起動スクリプトやstartWebLogic.sh内で設定するのがお勧めです。







3. JAVA_OPTIONS環境変数でGCログ用のオプションを設定します。HotSpotでは、-XX:+PrintGCDateStamps(タイムスタンプ日時を出力)、-XX:+UseGCLogFileRotation(ログファイルのローテーション)など最近使いやすい機能が提供されたので活用すると便利です。





4. コンソールログの取得設定を適切に行うとログを活用した運用・保守がしやすくなります。特にJVMの出力(スレッドダンプやOutOfMemoryErrorなど)で重要です。WLS_REDIRECT_LOG環境変数を使用することで出力するログファイルを設定できます。







5. ノードマネージャを使用した時の起動スクリプトはnodemanager.propertiesに設定できますが、WebLogic Serverのバージョンによってデフォルトのオプションが変更になっているので注意してください。WebLogic Server 12cではStartScriptEnabled=trueがデフォルトです。







以下、紙面の都合でスライドは割愛します。勉強会の発表資料を参考にしてください。



6. 管理対象サーバの第2引数は省略せずに明示的に管理サーバのURLを指定した方が良いケースがあります。



7. 起動時間を短縮するためにはクラスキャッシュ機能を有効(CLASS_CACHE環境変数をtrueに設定)にします。WebLogic Server10.3.3以降で開発モードのみで使用できます。



8. 停止スクリプトはデフォルトでは処理中の実行スレッドがあると待機します。待機させないためにforce='true'引数を使用できます。またOSレベルでシグナルを送って停止(kill -SIGTERM)することも可能ですが、SIGKILLを送信して強制的に終了した場合はロックファイルが残って再起動時に影響が出ることがあるので注意してください。



9. 同一ドメイン・ホスト内で停止スクリプトを同時実行した場合は、shutdown.py(一時ファイル)が競合し停止に失敗する可能性があります。停止スクリプトを並行して実行する場合はインスタンスごとにカスタムスクリプトを用意するのがお勧めです。



10. stopManagedWebLogic.shを使用して管理対象サーバを停止する場合は、第2引数を省略すると管理サーバ経由になります。管理サーバが停止している場合は正常に停止できないので、管理対象サーバを直接指定する方法が独立性を高められ効果があります。



11. WLSTから管理ポートなどにSSL経由で接続する場合は、SSL接続用に接続先プロトコル・ポート番号を指定します (t3://admin_host:7001 → t3s://admin_host:9002)。管理ポートを使用する場合は双方向SSL認証になるため、SSL用の設定をJAVA_OPTIONSで指定します。



12. ユーザ名やパスワードを環境変数で渡すのはセキュリティ上危険なので避けるのが賢明です。パスワードの自動入力が必要な場合は必ずboot.propertiesの仕組みを使用した運用を心掛けましょう。



13. JDKを変更する場合は、setDomainEnv.sh内のJAVA_HOMEとJAVA_VENDOR環境変数を両方とも変更すると間違いがありません。



14. 32bit, 64bitを変更する場合やユーティリティ利用時のJDK関連の変数については、commEnv.sh上の変数を変更します。


15. 起動・停止スクリプト実行時のカレント・ディレクトリは$DOMAIN_HOMEになります。つまりshutdown.py, コアファイルはドメイン・ディレクトリに作成されます。


16. rootアカウントでサーバを起動した後、ファイルパーミッションが変更され通常アカウントでの起動に失敗することがあります。
rootで起動する場合はあらかじめ(Well-knownポートでリスニング等)、マシンの[バインド後のユーザーID][バインド後のグループID]を指定してください。


17. 環境に合わせてOSレベルの設定を適切に行います。言語環境の明示指定(例: LANG="ja_JP.UTF-8"; export LANG)、umaskによるパーミッションの指定
(例: umask 022)、コアファイルサイズの指定(例: ulimit -c unlimited)、ファイルディスクリプタ(FD)の指定(例: ulimit -n 8192)など。


18. カスタマイズしたスクリプトを再利用することができます。オリジナルのスクリプトを含むテンプレートの作成、ドメインテンプレートビルダーを利用することで様々なドメイン環境のハードコーディングした値を変数に置き換えが可能です。


以上、山田氏が解説した起動・停止スクリプトのカスタマイズのポイントと注意点をまとめてみました。結構使いこなされている方でもご存知なかった機能や誤解されていた点や使い方があったのではないでしょうか?WebLogic Serverのパワーを最大限に引き出すためにはアプリケーションの起動・停止スクリプトを適切にカスタマイズすることが効果的です。勉強会の発表資料を参考に、ぜひ皆さんの利用している環境をもう一度チェックしてください。

求む、現場からの体験談

熱気あふれる勉強会の雰囲気

WebLogic Server勉強会は、参加者のスキルアップや参加者間のネットワークの拡大を目指して開催しています。次回以降のLightning Talksセッションでの発表ボランティアを募集しています。成功談・失敗談など何でも構いません。現場での体験談を参加者と共有ください。WebLogic Serverアプリケーションの起動・停止のカスタマイズに関する成功談(こんなテクニックを使っています)や失敗談(ここではまってしまいました)など、お待ちしています。

Lightning Talksセッションのスピーカー申込み:

スピーカー希望の方はTwitterで@OracleMiddle_jp をフォロー頂いた上で、「WebLogic Server勉強会でLT希望!」と@OracleMiddle_jpでメンションください。連絡を頂戴しましたら、以降はDMもしくは、メールにて連絡させていただきます。


Be the first to comment

Comments ( 0 )
Please enter your name.Please provide a valid email address.Please enter a comment.CAPTCHA challenge response provided was incorrect. Please try again.