Your SlideShare is downloading. ×
0
2013年WebLogic Server勉強会の総まとめ
2013年WebLogic Server勉強会の総まとめ
2013年WebLogic Server勉強会の総まとめ
2013年WebLogic Server勉強会の総まとめ
2013年WebLogic Server勉強会の総まとめ
2013年WebLogic Server勉強会の総まとめ
2013年WebLogic Server勉強会の総まとめ
2013年WebLogic Server勉強会の総まとめ
2013年WebLogic Server勉強会の総まとめ
2013年WebLogic Server勉強会の総まとめ
2013年WebLogic Server勉強会の総まとめ
2013年WebLogic Server勉強会の総まとめ
2013年WebLogic Server勉強会の総まとめ
2013年WebLogic Server勉強会の総まとめ
2013年WebLogic Server勉強会の総まとめ
2013年WebLogic Server勉強会の総まとめ
2013年WebLogic Server勉強会の総まとめ
2013年WebLogic Server勉強会の総まとめ
2013年WebLogic Server勉強会の総まとめ
2013年WebLogic Server勉強会の総まとめ
2013年WebLogic Server勉強会の総まとめ
2013年WebLogic Server勉強会の総まとめ
2013年WebLogic Server勉強会の総まとめ
2013年WebLogic Server勉強会の総まとめ
2013年WebLogic Server勉強会の総まとめ
2013年WebLogic Server勉強会の総まとめ
2013年WebLogic Server勉強会の総まとめ
2013年WebLogic Server勉強会の総まとめ
2013年WebLogic Server勉強会の総まとめ
2013年WebLogic Server勉強会の総まとめ
2013年WebLogic Server勉強会の総まとめ
2013年WebLogic Server勉強会の総まとめ
2013年WebLogic Server勉強会の総まとめ
2013年WebLogic Server勉強会の総まとめ
2013年WebLogic Server勉強会の総まとめ
2013年WebLogic Server勉強会の総まとめ
2013年WebLogic Server勉強会の総まとめ
2013年WebLogic Server勉強会の総まとめ
2013年WebLogic Server勉強会の総まとめ
2013年WebLogic Server勉強会の総まとめ
2013年WebLogic Server勉強会の総まとめ
2013年WebLogic Server勉強会の総まとめ
2013年WebLogic Server勉強会の総まとめ
2013年WebLogic Server勉強会の総まとめ
2013年WebLogic Server勉強会の総まとめ
2013年WebLogic Server勉強会の総まとめ
2013年WebLogic Server勉強会の総まとめ
2013年WebLogic Server勉強会の総まとめ
2013年WebLogic Server勉強会の総まとめ
2013年WebLogic Server勉強会の総まとめ
2013年WebLogic Server勉強会の総まとめ
2013年WebLogic Server勉強会の総まとめ
2013年WebLogic Server勉強会の総まとめ
2013年WebLogic Server勉強会の総まとめ
2013年WebLogic Server勉強会の総まとめ
2013年WebLogic Server勉強会の総まとめ
2013年WebLogic Server勉強会の総まとめ
2013年WebLogic Server勉強会の総まとめ
2013年WebLogic Server勉強会の総まとめ
2013年WebLogic Server勉強会の総まとめ
2013年WebLogic Server勉強会の総まとめ
2013年WebLogic Server勉強会の総まとめ
2013年WebLogic Server勉強会の総まとめ
2013年WebLogic Server勉強会の総まとめ
2013年WebLogic Server勉強会の総まとめ
2013年WebLogic Server勉強会の総まとめ
2013年WebLogic Server勉強会の総まとめ
2013年WebLogic Server勉強会の総まとめ
2013年WebLogic Server勉強会の総まとめ
2013年WebLogic Server勉強会の総まとめ
2013年WebLogic Server勉強会の総まとめ
2013年WebLogic Server勉強会の総まとめ
2013年WebLogic Server勉強会の総まとめ
2013年WebLogic Server勉強会の総まとめ
2013年WebLogic Server勉強会の総まとめ
2013年WebLogic Server勉強会の総まとめ
2013年WebLogic Server勉強会の総まとめ
2013年WebLogic Server勉強会の総まとめ
2013年WebLogic Server勉強会の総まとめ
2013年WebLogic Server勉強会の総まとめ
2013年WebLogic Server勉強会の総まとめ
2013年WebLogic Server勉強会の総まとめ
2013年WebLogic Server勉強会の総まとめ
2013年WebLogic Server勉強会の総まとめ
2013年WebLogic Server勉強会の総まとめ
2013年WebLogic Server勉強会の総まとめ
2013年WebLogic Server勉強会の総まとめ
2013年WebLogic Server勉強会の総まとめ
2013年WebLogic Server勉強会の総まとめ
2013年WebLogic Server勉強会の総まとめ
2013年WebLogic Server勉強会の総まとめ
2013年WebLogic Server勉強会の総まとめ
2013年WebLogic Server勉強会の総まとめ
2013年WebLogic Server勉強会の総まとめ
2013年WebLogic Server勉強会の総まとめ
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×
Saving this for later? Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime – even offline.
Text the download link to your phone
Standard text messaging rates apply

2013年WebLogic Server勉強会の総まとめ

3,673

Published on

2014年1月22日に開催された「第43回WebLogic Server勉強会」の資料です。 …

2014年1月22日に開催された「第43回WebLogic Server勉強会」の資料です。

「2013年WebLogic Server勉強会の総まとめ」

WebLogic Server勉強会で取り上げたトピックスの中から「さすがWebLogic」機能を選んでポイントを総復習します。セッションだけでなく、参加者からのQ&Aなどを含めてOracle ACEの山田貴裕さんと一緒に振り返ります。後半のW-1選手権の最終チェックにも有益でしょう。

日本オラクル Fusion Middleware事業統括本部 佐々木政和
伊藤忠テクノソリューションズ株式会社 Oracle ACE 山田 貴裕 氏

Published in: Technology
0 Comments
8 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
3,673
On Slideshare
0
From Embeds
0
Number of Embeds
3
Actions
Shares
0
Downloads
85
Comments
0
Likes
8
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

  • 1. 2013年WebLogic Server勉強会 総まとめ 2014年1月22日 日本オラクル株式会社 1 Copyright © 2014, Oracle and/or its affiliates. All rights reserved.
  • 2. 以下の事項は、弊社の一般的な製品の方向性に関する概要を説明するもので す。また、情報提供を唯一の目的とするものであり、いかなる契約にも組み 込むことはできません。以下の事項は、マテリアルやコード、機能を提供す ることをコミットメント(確約)するものではないため、購買決定を行う際 の判断材料になさらないで下さい。オラクル製品に関して記載されている機 能の開発、リリースおよび時期については、弊社の裁量により決定されます 。 OracleとJavaは、Oracle Corporation 及びその子会社、関連会社の米国及びその他の国における登録商標です。 文中の社名、商品名等は各社の商標または登録商標である場合があります。 2 Copyright © 2014, Oracle and/or its affiliates. All rights reserved.
  • 3. WebLogic Server基本編 3 Copyright © 2014, Oracle and/or its affiliates. All rights reserved.
  • 4. WebLogic Server基本編 開催日 セッション 資料 1月24日 「起動・停止スクリプトを極める」 http://www.slideshare.net/OracleMiddleJP/ss-16168237 5月23日 「WebLogic Server の開発モードと本番モード」 http://www.slideshare.net/OracleMiddleJP/weblogic-server22423176 6月20日 「WebLogic Server デプロイメント エッセンシャ ルズ」 http://www.slideshare.net/OracleMiddleJP/20130620wlstudy-deployhandsout 8月21日 「Java EE アプリケーションをWebLogic Serverで動 かしてみよう」 http://www.slideshare.net/OracleMiddleJP/20130821wlstudy-jeeapphandsout 4 Copyright © 2014, Oracle and/or its affiliates. All rights reserved.
  • 5. 目標:WebLogic Serverを使って見る。 テーマ インストール インストーラが12.1.2でOUIに変更。ドメインとは、管理サーバ、管 理対象サーバ 開発モードと本番モード 開発モードと本番モードの違い、開発モードでのみ使用できる機能、 開発モードと本番モードの切り替え 管理サーバと管理対象サーバの起動と終了 起動/停止スクリプトの構造、利用する可能性が高い環境変数 アプリケーションのデプロイ 5 チャレンジ項目 デプロイメントとは、2段階(インストール、アクティベーション)、 コンソールデプロイメント、コマンドラインデプロイメント、自動 デプロイメント、ステージングモード、デプロイメントプラン、プ ロダクション再デプロイメント、FastSwap Copyright © 2014, Oracle and/or its affiliates. All rights reserved.
  • 6. WebLogic Server のインストール WLS12.1.2からインストーラがOUIに TIPS: インストーラの起動 $ java –d64 –jar wls_121200.jar TIPS: インベントリ・ディレクトリが 存在しない場合はインベントリ・ディ レクトリを指定 6 Copyright © 2014, Oracle and/or its affiliates. All rights reserved.
  • 7. ドメインディレクトリ構成 ディレクトリ 1 domain 説明 ドメインディレクトリ (ディレクトリ名=ドメイン名) 0 autodeploy 自動デプロイメントディレクトリ(開発モード用) 0 bin 起動・停止スクリプト etc 0 config コンフィグレーションディレクトリ config.xmlが配置される 0 init-info ドメインの初期化情報 0 nodemanager ノードマネージャ・ホームディレクトリ (WLS12.1.2 ~) 0 pending ペンディングコンフィグレーションストア (編集中のコンフィグレーションの保存先) 0 security セキュリティファイル (ldift, SerializedSystemIni.dat) 1 servers サーバローカルディレクトリ servers配下にサーバごとにディレクトリが作成される 0 server_name 7 Copyright © 2014, Oracle and/or its affiliates. All rights reserved. 管理サーバ: startWebLogic.sh / stopWebLogic.sh 管理対象サーバ: startManagedWebLogic.sh / stopManagedWebLogic.sh
  • 8. 起動スクリプトと停止スクリプト 1月24日「起動・停止スクリプトを極める」資料引用 8 Copyright © 2014, Oracle and/or its affiliates. All rights reserved.
  • 9. カスタマイズ対象の環境変数 1月24日「起動・停止スクリプトを極める」資料引用 9 Copyright © 2014, Oracle and/or its affiliates. All rights reserved.
  • 10. ステージングとは? デプロイ対象のサーバーにアプリケーションを配布すること 管理サーバーのマシン 管理対象サーバーのマシン 管理対象サーバー <source_dir> webApp.war <domain> アプリケーション・ファイル は管理サーバの任意のディレ クトリに配置可能。 servers webApp.war ファイルは必要に応じてアッ プロード可能。(コンソール/ コマンドライン) upload webApp.war アップロード 10 Copyright © 2014, Oracle and/or its affiliates. All rights reserved. webApp.war servers <server_dir> <server_dir> stage <server_root> 管理サーバからステージされ るファイルは各サーバーのス テージングディレクトリに配 置される stage <app-name> webApp.war ステージング ロード アクティブ化
  • 11. コマンドラインデプロイメント コマンドラインデプロイメントはWLST、 またはweblogic.Deployerで実行可能 デプロイなし ① * コマンドは管理サーバに対して実行 WLST ① 準備完了 ⑤ 管理 ② ② ③ ③ アクティブ ⑦ 11 ⑥ ③ ② Copyright © 2014, Oracle and/or its affiliates. All rights reserved. distributeApplication() -distribute ② ④ weblogic.Deployer startApplication() -start ③ stopApplication() -stop ④ undeploy() -undeploy ⑤ deploy() -deploy ⑥ undeploy() -undeploy ⑦ redeploy() -redeploy 管理モード起動時は管理ポートを有効化する必要がある (主にプロダクション再デプロイメント用)
  • 12. プロダクション再デプロイメント バージョニングによる再デプロイメント  WebLogic Serverではアプリケーションをバージョニング可能 – 保持できるバージョンは2つまで  プロダクション再デプロイメントでは新しいバージョンと古いバー ジョンを並行してデプロイする – 既存のクライアント・リクエストは古いバージョンへ – 新しいクライアント・リクエストは新しいバージョンへ プロダクション再デプロイメントを使用するとサービスを中断しない アプリケーション更新をサーバ単体で実現可能 12 Copyright © 2014, Oracle and/or its affiliates. All rights reserved.
  • 13. プロダクション再デプロイメント アクセスするバージョンはWebLgoic Serverが管理 既存の ユーザ・リクエスト 古い アプリケーション WebApp (v1) NOTE: すべてのセッションが タイムアウト or 指定したタイ ムアウト時間経過でアプリ ケーションはリタイアする 新バージョンデプロイ後は リタイア中に WebLogic Server 13 Copyright © 2014, Oracle and/or its affiliates. All rights reserved. 新しい ユーザ・リクエスト 新しい アプリケーション WebApp (v2) デプロイ後は新バージョンが アクティブに
  • 14. WebLogic Server データベース接続 14 Copyright © 2014, Oracle and/or its affiliates. All rights reserved.
  • 15. WebLogic Serverデータベース接続 開催日 セッション 資料 2月20日 「WebLogic Serverとデータベース接続の基礎から 応用」 http://www.slideshare.net/OracleMiddleJP/weblogic-server16684776 4月25日 「Active GridLink for RAC 入門」 http://www.slideshare.net/OracleMiddleJP/20130425wlstudy-agl4rachandsout 15 Copyright © 2014, Oracle and/or its affiliates. All rights reserved.
  • 16. 目標:データソース設定を適切に テーマ データソース設定パラメータ それぞれの意味を理解し環境に合わせた設定ができること。 障害時対応 障害時のリカバリを学ぶ。動作内容、振る舞いを理解する。 GridLinkデータソース 16 チャレンジ項目 特長と動作内容を理解する。 Copyright © 2014, Oracle and/or its affiliates. All rights reserved.
  • 17. データソースを使ったデータベースアクセス アプリケーションは接続情報を意識しない WebLogic Server JNDI デプロイ時にバインド @Resource(name = "jdbc/test") DataSource ds; 接続オブジェクト取得 try (Connection conn = ds.getConnection(); PreparedStatement pstmt = conn.prepareStatement(QUERY)) { pstmt.setString(1, "xxx"); ResultSet rs = pstmt.executeQuery(); while(rs.next()) { // .... } } catch (SQLException e) { // 例外処理 } 開発者 17 Copyright © 2014, Oracle and/or its affiliates. All rights reserved. 接続プール データソース JNDIルックアップ (論理名で検索) デプロイ時に 初期容量まで接続 RDBMS 運用担当者
  • 18. データベースとの接続が失われた場合 接続テストを行わないと無効な接続を保持し続ける  データベースとの接続が失われると接続オブジェクトは無効になる – WebLogic Serverデータソースでは接続テストによって無効な接続をリフ レッシュ可能 @Resource(name = "jdbc/test") DataSource ds; try (Connection conn = ds.getConnection(); PreparedStatement pstmt = conn.prepareStatement(QUERY)) { pstmt.setString(1, "xxx"); ResultSet rs = pstmt.executeQuery(); while(rs.next()) { // .... } } catch (SQLException e) { // 例外処理 } 18 Copyright © 2014, Oracle and/or its affiliates. All rights reserved. 1. ds.getConnection() 3. Connectionを返却 接続プール 2. SELECT 1 FROM dual RDBMS 無効な接続を破棄 して再作成
  • 19. 接続テストの振る舞い テスト設定の有無でデータソース無効化のタイミングが異なる  データベース接続が失われた場合 – テストなし … 無効な接続が維持される – テストあり … テストに2回失敗すると全接続を閉じる  全接続が閉じられたデータソースは無効化される(PoolDisabledSQLException) – リフレッシュ・プロセスとして定期的なヘルス・チェックを実行(5秒間隔) – データベースが回復すると接続を作成し、データソースを有効化する DB接続の失敗を許容しない場合: アイドル・プール接続を信頼する秒数=0, 予約時に接続をテスト=有効化 DB接続の失敗を許容できる場合: アイドル・プール接続を信頼する秒数…大きく,テスト頻度>0 or 予約時に接続をテスト=有効化 19 Copyright © 2014, Oracle and/or its affiliates. All rights reserved.
  • 20. GridLinkデータソースと汎用データソース RAC接続時の振る舞いの違い  汎用データソース – 実行時ロードバランスはなく、RAC側の都合は意識できない。実行 先RACインスタンスに偏りが出る可能性がある。 – RACサービス(インスタンス)の動的な停止、起動に対する物理接 続の作成、終了タイミングが制御できない  GridLinkデータソース – 接続先のインスタンスを意識できる(アプリケーションからは透過) – FANイベントによりRAC側のステータスを把握でき、適切な実行時 ロードバランスが可能 – 20 データソース 接続先のRACインスタンスを意識していない – 通常のデータソース RACサービス(インスタンス)の停止では迅速にそのインスタンス だけの接続を終了させ、起動時は自動的にそこへの物理作成を作 成 Copyright © 2014, Oracle and/or its affiliates. All rights reserved. RAC Connection Connection Connection Connection RACステー タスなし GridLinkデータソース GridLink DS RAC1 RAC Connection Connection RAC2 Connection RAC2 Connection RAC1 RAC ステータス FAN
  • 21. GridLinkデータソースの仕組み WebLogic ServerデータソースにUCPの機能を統合  ONS (Oracle Notification Service) – RAC側の情報をFANイベントとして送信する仕組み  FAN (Fast Application Notification ) – RAC側の死活情報、負荷情報などを含んだ情報  UCP ( Universal Connection Pool) – GridLinkデータソースがFANイベント情報を扱うために内部で利用  ロード・バランシング・アドバイザ – インスタンス1 ONS Daemon UCP-RAC モジュール Copyright © 2014, Oracle and/or its affiliates. All rights reserved. ONS Daemon FAN インスタンス2 RAC 死活・負荷状況通知 サービスA GridLinkデータソース (サービスA用) ONS client WebLogic Server 21 RACのサービスレベルでの負荷状況をFANを通じてアプリケーションに提供 ロード・バラ ンシング・ア ドバイザ
  • 22. 高速接続フェールオーバー (FCF) 障害時の早期エラー検出機能  UCPがサブスクライブしているRAC FANイベントをWebLogic Server の接続プールに通知 – RACノードの計画/計画外停止(DOWNイベント) – RACノードの新規追加や復旧(UPイベント)  通知されたイベントをもとにWebLogic Server側で接続プールを制御 – 無効な接続を検知し即座に削除 … 障害インスタンスの接続だけ削除し、正常なインスタンスへの接続は維持 – ノードの追加や削除を検知し、アクティブなRACインスタンスに分配 RAC Database WebLogic Server ONS Subscribe Start X X X FAN Handle Event GridLink DataSource 22 Copyright © 2014, Oracle and/or its affiliates. All rights reserved. ONS Publish Universal Connection Pool (UCP) X Instance1 Instance2 Instance3
  • 23. 実行時接続ロードバランシング (RCLB) 負荷状況に応じた最適なリクエスト配分  Oracle RACのロード・バランシング・アドバイザ – RACインスタンスが自身のSQL実行統計を観測し、最適なリクエスト配分を算出    サービスタイムまたはスループットのどちらかを優先した方法でリクエスト配分を算出 リクエスト配分をFANイベントとして、ONS経由でGridLink内のUCPモジュールに送信 GridLinkデータソース – 各インスタンスのリクエスト配分率にしたがってプールからどのインスタンスへの接続を取得するかを選択 クラスタの設定変更、アプリケーションのワークロード、過負荷/ハング状態のノードにも対応  WebLogic Server RAC Database 30% GridLinkデータソース Instance1 10% SQL実行統計 Application Instance2 比率に応じた コネクション リクエスト配分 比率情報 23 inst1: 30% inst2: 10% inst3: 60% Copyright © 2014, Oracle and/or its affiliates. All rights reserved. 60% リクエスト配分比率 SQL実行統計 FAN Instance3 SQL実行統計 ロード・バラ ンシング・ア ドバイザ
  • 24. Webセッション・アフィニティ セッション処理を同じRACインスタンスで処理  最初のリクエストはRCLBによってインスタンスを選択  コンテキスト内に選択されたインスタンス情報が保存され同じHttpセッション内で有効 – セッション外のリクエストはXAアフィニティで処理 アフィニティのON/OFFをRAC側が自動的に制御。アフィニティヒントとしてFANで通知 WebLogic Server – RAC Database GridLinkデータソース Instance1 HTTPセッション Application 前回と同じインスタンス用の コネクション アフィニティ 有効フラグ 24 Copyright © 2014, Oracle and/or its affiliates. All rights reserved. 待機イベント統計 Instance2 アフィニティ・コンテキスト sessionXX : inst1 inst1: true inst2: true inst3: true アフィニティヒント 待機イベント統計 FAN Instance3 待機イベント統計 ロード・バラ ンシング・ア ドバイザ
  • 25. XAトランザクション・アフィニティ XA処理を同じRACインスタンスで処理  最初のリクエストはRCLBによってインスタンスを選択  コンテキスト内にインスタンス情報が保存され同じXAトランザクション内で有効になる – WebLogicのコンテキスト伝搬機能により他のサーバーでもコンテキスト情報が共有され同じRACインスタンス を選択 – アフィニティのON/OFFをRAC側が自動的に制御。アフィニティヒントとしてFANで通知。 WebLogic Server GridLInkデータソース TXClient 1 XAトランザクション Instance1 コンテキスト伝搬 TXClient 2 前回と同じインスタンス用の コネクション 25 RAC Database Copyright © 2014, Oracle and/or its affiliates. All rights reserved. Txコンテキスト XID xxx : inst1 Instance2 Instance3
  • 26. WebLogic Scripting Tool (WLST) 26 Copyright © 2014, Oracle and/or its affiliates. All rights reserved.
  • 27. WebLogic Scripting Tool 開催日 セッション 資料 7月23日 「使ってみよう WLST」 http://www.slideshare.net/OracleMiddleJP/20130723wlstudy-wlstpublish 7月23日 「一歩先に進むためのWLST活用技法」 http://www.slideshare.net/OracleMiddleJP/wlstudy201307wlst 27 Copyright © 2014, Oracle and/or its affiliates. All rights reserved.
  • 28. 目標:WLSTを使って見る。 テーマ WLST活用 WLSTサンプルの内容を理解し、カスタマイズして動作を確認する。 MBean 28 チャレンジ項目 MBeanを使ったWLSTを作成し理解を深める。 Copyright © 2014, Oracle and/or its affiliates. All rights reserved.
  • 29. WLSTの機能 Administration Console 複数のツールで実行していた WebLogic Serverの管理作業を WLSTひとつに集約できる WLST ドメイン構成ウィザード weblogic.Deployer 29 Copyright © 2014, Oracle and/or its affiliates. All rights reserved.
  • 30. WLST操作の基本的な流れ 管理サーバ ② 操作目的に応じてツリー (MBeanサーバ)を移動 serverRuntime serverConfig Runtime Edit edit server Runtime ls get ③ 目的のコマンドを実行 30 Copyright © 2014, Oracle and/or its affiliates. All rights reserved. edit Configuration WLST ① サーバに接続 server Config startEdit cd set save activate cd connect cd ls get
  • 31. WLST操作 ③ 目的のコマンドを実行 ① サーバに接続 a. ロックして編集 b. 管理対象サーバー作成 c. 保存 d. アクティブ化 ② 操作目的に応じてツ リー(MBeanサーバ)を移動 31 Copyright © 2014, Oracle and/or its affiliates. All rights reserved.
  • 32. WebLogic Server クラスタリング 32 Copyright © 2014, Oracle and/or its affiliates. All rights reserved.
  • 33. WebLogic Serverクラスタリング 開催日 セッション 資料 9月26日 「Oracle WebLogic Serverクラスタリングの勘所」 http://www.slideshare.net/OracleMiddleJP/20130926wlstudy-clusterhandsout 33 Copyright © 2014, Oracle and/or its affiliates. All rights reserved.
  • 34. 目標:クラスタの役割と機能を学ぶ。 テーマ クラスタ概要 クラスタの役割と機能を理解し環境に合わせた設定ができること。 フェイルオーバ 障害時の動作内容、振る舞いを理解。フェイルオーバの流れを理解 する。 クラスタ環境設定 34 チャレンジ項目 クラスタグループなどの効率的な設定方法を学ぶ。 Copyright © 2014, Oracle and/or its affiliates. All rights reserved.
  • 35. WebLogic Server クラスタ  複数の『サーバー』の論理的なグループ – 各サーバー上にデプロイされたアプリケーション・サービスに対して拡張性・高可 用性を提供する – クライアントからは単一のサーバにアクセスしているように見えるように複数の サーバーが協調動作する クラスタ サーバー アプリケーション サービス クライアント クライアントはアクセスす るサーバーを意識しない 35 サーバー Copyright © 2014, Oracle and/or its affiliates. All rights reserved. サーバー サーバー
  • 36. 設定箇所の確認  クラスタの設定: WebLogicドメインで設定 WLSドメインの 設定  プロキシの設定: プロキシ側で設定 Server1 Web コンテナ プロキシ Copyright © 2014, Oracle and/or its affiliates. All rights reserved. EJB コンテナ Server2 Web コンテナ 36 AdminServer EJB コンテナ cluster1 データソース 設定ファイル mydomain データソース HTTPサーバーやロード バランサの設定 ドメイン設定 RDBMS
  • 37. Webアプリケーションのクラスタ化  クラスタにデプロイされたWebアプリケーションへの負荷分散・フェイル オーバーはプロキシプラグインによって行われる – WebLogic Server Plugin (HTTP サーバー) – ロードバランサ  Webアプリケーションのフェイルオーバーにはユーザの対話状態(HttpSession) を永続化する必要がある – インメモリレプリケーション 信頼性 – Cookie 低 37 低 速度 高 高 – File – JDBC Copyright © 2014, Oracle and/or its affiliates. All rights reserved. 通常はインメモリレプリケーション を第一候補に検討 HttpSessionの消失が許容できない場 合はJDBCを検討
  • 38. HttpSession永続化設定 Webアプリケーションの設定  HttpSessionの永続化設定は、Webアプリケーションの デプロイメント記述子 (weblogic.xml)で指定 – IMRはreplicated | replicated_if_clustered (デフォルトは memory ) weblogic.xml TIPS: 永続化方式にreplicated_if_clusteredを指定す ると、クラスタ、非クラスタにデプロイ可能 38 Copyright © 2014, Oracle and/or its affiliates. All rights reserved.
  • 39. インメモリレプリケーション  HttpSession をクラスタ内の2つのサー クライアント バーで保持する – セッション毎にプライマリ・セカンダリ プロキシ サーバーが決定される – サーバーにはプライマリ・セカンダリ セッションが混在する  セカンダリ分だけヒープ消費量は増大 Server1 Server2 1 3 2 Server3 2 1 セカンダリ プライマリ cluster1 39 Copyright © 2014, Oracle and/or its affiliates. All rights reserved. 3
  • 40. インメモリレプリケーションの動作 正常時  プライマリサーバーは負荷分散に クライアント よって初回リクエスト時に決定 – セカンダリサーバーはレプリケーショ プロキシ ン・グループとマシン設定から HttpSession生成時に決定 プライマリ = Server3 セカンダリ = Server2 – セカンダリサーバーへの同期は HttpSession#setAttribute()がトリガ Server1 Server2 setAttribute() – プライマリ・セカンダリサーバー情報 はCookieに埋め込まれる セカンダリ cluster1 40 Copyright © 2014, Oracle and/or its affiliates. All rights reserved. Server3 プライマリ
  • 41. インメモリレプリケーションの動作 フェイルオーバー プライマリ = Server3 セカンダリ = Server2  プライマリサーバーに障害が発生する とセカンダリが昇格 クライアント – 別のサーバでセカンダリが再生成される  プロキシプラグインによってセカンダ プロキシ リサーバーにリクエストの振り替えら れる – 振り替えはクライアントからの次の Server1 Server2 Server3 リクエスト時 – プロキシプラグインはCookieの サーバーリストをもとにセカンダリ サーバーに接続 41 Copyright © 2014, Oracle and/or its affiliates. All rights reserved. セカンダリ プライマリ cluster1 プライマリ
  • 42. インメモリレプリケーションの動作 フェイルオーバー  プライマリに昇格したサーバーは Cookieを更新 クライアント – プライマリとセカンダリ情報が更新され たCookieがクライアントに戻される プロキシ プライマリ = Server2 セカンダリ = Server1 TIPS: セッションIDのフォーマット Server1 Server2 setAttribute() [SessionID]![JVMID1]![JVMID2]![CreationTime] セカンダリ プライマリ cluster1 42 Copyright © 2014, Oracle and/or its affiliates. All rights reserved. Server3
  • 43. インメモリレプリケーションとマシン  セカンダリセッションの作成先は別 クライアント マシン上のサーバーが優先される – 1つのH/W上に複数のサーバーが存在す る場合はマシンを定義しないと同一 H/W上にセカンダリセッションが 作成される可能性がある プロキシ MachineX MachineY Server1 Server2 2 1 セカンダリ 2 Server3 1 プライマリ 2 cluster1 43 Copyright © 2014, Oracle and/or its affiliates. All rights reserved.
  • 44. インメモリレプリケーションの考慮事項  リクエストのフェイルオーバーはプラグインによって行われる – クライアントからのリクエスト到達までにプライマリ/セカンダリサーバーが共にダ ウンするとセッションは継続できない – セッションの消失が許容できない場合はインメモリレプリケーションは選択不可 – IMRを使用する場合は3つ以上のサーバーでクラスタを構成することを推奨  HttpSessionに格納するデータサイズが大きすぎるとレプリケーションでオー バーヘッドが発生する – HttpSessionに格納するデータは可能な限りコンパクトに  java.io.Serializableの実装も忘れずに – 同期のトリガはHttpSession#setAttribute() 44 Copyright © 2014, Oracle and/or its affiliates. All rights reserved.
  • 45. Java EE 45 Copyright © 2014, Oracle and/or its affiliates. All rights reserved.
  • 46. Java EE 開催日 セッション 資料 3月21日 「Java Persistence API入門」 http://www.slideshare.net/OracleMiddleJP/java-persistenceapi-17707340 3月21日 「WebLogic ServerでJAX-RS」 http://www.slideshare.net/OracleMiddleJP/weblogicserverjaxrs 6月20日 「Context and Dependency Injection(CDI) 入門」 http://www.slideshare.net/OracleMiddleJP/20130620wlstudy-cdiv01 46 Copyright © 2014, Oracle and/or its affiliates. All rights reserved.
  • 47. 目標:JPA, JAX-RS, CDIの概要を学ぶ。 テーマ JPA 目的、メリット、機能を理解し実際に使用する。 JAX-RS 目的、メリット、機能を理解し実際に使用する。 CDI 47 チャレンジ項目 目的、メリット、機能を理解し実際に使用する。 Copyright © 2014, Oracle and/or its affiliates. All rights reserved.
  • 48. JPA概要  Java Persistence APIの略  Java EE環境に限らず、Java SEでも利用可能  O/Rマッピングの仕様 – データベースのテーブルのレコードをJavaのオブジェクトに相互変換 – Javaのオブジェクトにアクセスし、データベース操作可能  「JSR-000317 JavaTM Persistence 2.0 (Final Release)」(2009年12月10日)  「JSR-000338 JavaTM Persistence 2.1 (Final Release)」(2013年5月22日) 参照 挿入 Java 更新 App Object 削除 48 Copyright © 2014, Oracle and/or its affiliates. All rights reserved. データベース マッピング(自動で相互変換)
  • 49. JPAプログラミング public static void main(String[] args) { Connection con = null; PreparedStatement stm = null; try { Class.forName(“oracle.jdbc.OracleDriver”); con = DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:xe", "HR", "hr"); stm = con.prepareStatement("SELECT * FROM Employees e WHERE e.EMPLOYEE_ID = ?"); stm.setInt(1, 100); ResultSet rSet = stm.executeQuery(); if (rSet.next()) { Employee emp = new Employee(); emp.setEmployeeId(rSet.getLong("EMPLOYEE_ID")); emp.setLastName(rSet.getString("LAST_NAME")); emp.setFirstName(rSet.getString("FIRST_NAME")); emp.setEmail(rSet.getString("EMAIL")); emp.setPhoneNumber(rSet.getString("PHONE_NUMBER")); emp.setHireDate(rSet.getDate("HIRE_DATE")); emp.setJobId(rSet.getString("JOB_ID")); emp.setSalary(BigDecimal.valueOf(rSet.getLong("SALARY"))); emp.setCommissionPct(BigDecimal.valueOf(rSet.getLong("COMMISSION_PCT"))); emp.setDepartmentId(BigDecimal.valueOf(rSet.getLong("DEPARTMENT_ID"))); System.out.println(emp); } } catch (ClassNotFoundException e) { e.printStackTrace(); } catch (SQLException e) { e.printStackTrace(); } finally { try { if (stm != null) stm.close(); if (con != null) con.close(); } catch (SQLException e) { e.printStackTrace(); } } 49 Copyright © 2014, Oracle and/or its affiliates. All rights reserved. public static void main(String[] args) { EntityManager em = Persistence.createEntityManagerFactory("db").createEntityManager(); Employee emp = em.find(Employee.class, 100L); System.out.println(emp); em.close(); } コード量大幅削減
  • 50. JPAの構成要素 Persistence Context Persistent Unit EntityManager (persistence.xml) データ操作及び管理の 為のAPIを提供する Entity Entity Entity 決定 EntityManagerFactory Persistence Unitの設定に基づ き、Entity Managerのインスタ ンスを生成 50 Copyright © 2014, Oracle and/or its affiliates. All rights reserved. 生成 Entity Entity データベース
  • 51. Entityとは  テーブルに対応したマッピング対象のクラス(=Entity) – ただのPOJO(Plain Old Java Object)で作成 – @Entityアノテーション ⇒ Entityクラスであることを示す – @Idアノテーション ⇒ 主キーを示す @Entity public class Customer { @Id private Long id; private String address1; private long age; private String name; private String telephone; //セッタ・ゲッタ } 51 Copyright © 2014, Oracle and/or its affiliates. All rights reserved. Entity Customerクラス データベース CUSTOMER表 ID ADDRESS1 AGE NAME TELEPHONE
  • 52. Entityのライフサイクル 52 Copyright © 2014, Oracle and/or its affiliates. All rights reserved.
  • 53. Entityのライフサイクル(コード例)  ライフサイクルのコード例 – Entityのインスタンスを生成(new)しただけではデータベースには何も 反映されない EntityManagerFactory emf = Persistence.createEntityManagerFactory(”DB"); EntityManager em = emf.createEntityManager(); EntityTransaction tx = em.getTransaction(); Customer customer = new Customer(); //Entityの生成 tx.begin(); em.persist(customer); //管理状態のEntity tx.commit(); //デタッチ状態になるEntity //JavaのHeapにはcustomerは存在するが、JPAの管理状態から外れデタッチ状態 //この状態でcustomerに対する操作を行った場合は、merge()で同期 em.close(); emf.close(); 53 Copyright © 2014, Oracle and/or its affiliates. All rights reserved.
  • 54. 2種類のEntityManager  コンテナ管理のEntityManager(Java EE環境) – アノテーション、DIによりEntityManagerインスタンスを注入 – コンテナがトランザクションを管理する @PersistenceContext(unitname = “DB”) private EntityManager entityManager;  アプリケーション管理のEntityManager(Java SE/EE環境) – Factoryメソッドを使用して、EntityManagerを取得 – アプリケーション側でトランザクションを管理のためのコーディング必要 EntityManagerFactory emf = Persistence.createEntityManagerFactory(“DB"); EntityManager em = emf.createEntityManager(); EntityTransaction tx = em.getTransaction(); tx.begin(); em.persist(customer); tx.commit(); em.close(); emf.close(); 54 Copyright © 2014, Oracle and/or its affiliates. All rights reserved.
  • 55. JAX-RS概要  The Java™ API for RESTful Web Servicesの略  JAX-RSはHTTPを使用したシンプルなWebサービスの仕様  ステートレスであり、セッション情報などの状態を保持しない。  「JSR-000311 JAX-RS 1.1: The JavaTM API for RESTful Web Services」 (2009年9月17日)  「JSR-000338 JAX-RS 2.0: The JavaTM API for RESTful Web Services」 (2013年5月24日) 55 Copyright © 2014, Oracle and/or its affiliates. All rights reserved.
  • 56. JAX-RSとは 3月21日「WebLogic ServerでJAX-RS」資料引用 56 Copyright © 2014, Oracle and/or its affiliates. All rights reserved.
  • 57. JAX-RSとは 3月21日「WebLogic ServerでJAX-RS」資料引用 57 Copyright © 2014, Oracle and/or its affiliates. All rights reserved.
  • 58. JAX-RSとは 3月21日「WebLogic ServerでJAX-RS」資料引用 58 Copyright © 2014, Oracle and/or its affiliates. All rights reserved.
  • 59. Context and Dependency Injection(CDI)概要  JSR 299: Contexts and Dependency Injection for the JavaTM EE platform (2009年12月10日)  Contexts:サーバ上の状態を表現するもの  Dependency Injection:依存性の注入 インスタンスのライフサイクル管理や インスタンス(の依存関係)の注入をコンテナが引き受ける (=プログラマが、クラスをnewしたり、setメソッドを呼び出す必要が減少) コンポネント間を疎結合にできる 59 Copyright © 2014, Oracle and/or its affiliates. All rights reserved. コードがよりシンプルになる
  • 60. CDIができること DI(依存性注入) インターセプト インスタンスのライフサイクル管理 EL式からのアクセス Bean HTTPリクエスト 60 Copyright © 2014, Oracle and/or its affiliates. All rights reserved. Bean
  • 61. Java EE 5のDI  DIの機能はJava EE 5 でも使用可能だが… JSF 依存関係 プレゼンテーション層 @ManagedBean public class SampleMg { データアクセス層 @Stateful public class Logic { @PersistenceContext(unitName=“JPA”) private EntityManager em; <?xml version="1.0" encoding="UTF-8" ?> <persistence xxx> <persistence-unit name=“JPA"> } 注入する種別によってアノテーションが異なる 61 Copyright © 2014, Oracle and/or its affiliates. All rights reserved. JPA 依存関係 ビジネスロジック層 @EJB private Logic lg; } EJB …略 注入先も限定的
  • 62. Java EE 6のCDI  CDIを使用したコーディング JSF EJB 依存関係 プレゼンテーション層 @Named @RequestScoped public class SampleMg { @Inject private Logic lg; JPA 依存関係 ビジネスロジック層 @Stateful public class Logic { @Inject private EntityManager em; } データアクセス層 <?xml version="1.0" encoding="UTF-8" ?> <persistence xxx> <persistence-unit name=“JPA"> …略 } 注入する種別が異なっても@Injectで注入可能 62 Copyright © 2014, Oracle and/or its affiliates. All rights reserved. 注入先も自由
  • 63. Java EE 6のCDI:何を注入するか  注入先の型がインターフェースの場合 実装クラスのインスタンスを生成して注入 public class xxBean{ @Inject private BizLogic logic; } 注入 public class BizLogicImpl implement BizLogic { }  実装クラスが複数ある場合はエラー public class xxBean{ @Inject private BizLogic logic; } 63 Copyright © 2014, Oracle and/or its affiliates. All rights reserved. Error 解決方法例 public class BizLogicImplJAPAN implement BizLogic { } public class BizLogicImplUS implement BizLogic { } Qualifierの機能を使用して適 切に注入できるようになる public class xxBean{ @JPN @Inject private BizLogic logic; } 注入 @JPN public class BizLogicImplJAPAN implement BizLogic { }
  • 64. WebLogic Serverチューニング 64 Copyright © 2014, Oracle and/or its affiliates. All rights reserved.
  • 65. WebLogic Serverチューニング 開催日 セッション 資料 11月27日 「Oracle WebLogic Serverチューニングのポイン ト」 http://www.slideshare.net/OracleMiddleJP/20131127wlstudy-tuninghandsout 65 Copyright © 2014, Oracle and/or its affiliates. All rights reserved.
  • 66. 目標:チューニング要素をマスター テーマ WebLogic Serverアーキテクチャ リクエスト処理の流れを理解する。 ワークマネージャ 機能、振る舞いを理解する。 リソース 66 チャレンジ項目 全体最適のためにリソースを効率良く使うためのTipsをマスターす る。 Copyright © 2014, Oracle and/or its affiliates. All rights reserved.
  • 67. WebLogic Serverのリクエスト処理 リクエスト処理でポイントになる箇所 WebLogic Server スレッドプールのスレッドが EAR ワークマネージャによって使用 される SocketMuxer Webコンテナ スレッド数は負荷に応じて自動 チューニングされる 原則としてMuxerは NativeI/Oを使用 クライアント クライアント クライアント クライアント クライアント 7001 ワークマネージャに最大容量が設定 されているとスレッド割り当て待ち が発生する 最大容量を設定しないとスレッド数 WorkManager が増えすぎて適性な性能を得られな い場合がある 67 Copyright © 2014, Oracle and/or its affiliates. All rights reserved. EJBコンテナ (フリープール) データ ソース SLSBのフリープール サイズが小さいとEJB 呼び出しで待ちが発 生する カスタムワークマネージャ を使用する場合はアプリ ケーション側で指定 データベース データベースへの接続 要求が最大容量を超え ると待ちが発生する
  • 68. WebLogic Serverのリクエスト処理 クライアントからのリクエストはスレッドで処理される リクエスト受信 リクエスト処理 WebLogic Server EAR リクエストはMuxer キューへ(リスンス SocketMuxer レッド) Muxerキュー Webコンテナ EJBコンテナ (フリープール) データ ソース ワークマネージャ 7001 データベース バックログ Muxerスレッド SocketMuxerによって 実行スレッドに引き渡 される 単一のスレッドプー スレッドプール ルの実行スレッドで リクエストを処理 WorkManager 68 Copyright © 2014, Oracle and/or its affiliates. All rights reserved.
  • 69. ワークマネージャの構成要素 要求クラスと制約  ワークマネージャ – 要求クラス … フェアシェア、応答時間、コンテキストのうち1つを指定 – 制約 … 最大スレッド数、最小スレッド数、容量を任意で指定 制約 1 要求クラス ワークマネージャ 制約 2 69 Copyright © 2014, Oracle and/or its affiliates. All rights reserved.
  • 70. 要求クラス リクエストの重みを決定する 要求クラス 説明 フェアシェア要求クラス リクエスト割り当ての重みを指定 フェアシェアは1~1000の任意の数値を指定。 2つのワークマネージャにそれぞれフェアシェア10, 20を設定し た場合は1:2の割合でスレッドが割り当てられる 応答時間要求クラス 応答目標時間を指定 2つのワークマネージャにそれぞれ2000ms, 1000msと応答時間 を設定した場合は1:2の割合でスレッドが割り当てられる コンテキスト要求クラス ユーザ/グループ毎に要求クラスを指定 ユーザAにフェアシェア50、ユーザBにフェアシェア100の要求 クラスを設定した場合はユーザBのリクエストに多くスレッドが 割り当てられる 70 Copyright © 2014, Oracle and/or its affiliates. All rights reserved.
  • 71. 制約 スレッド生成やリクエスト数を制限する 最大スレッド数制約 最大同時実行数 複数ワークマネージャで共有可能 最小スレッド数制約 最小同時実行数 主にデッドロック防止のために使用 容量制約 実行中+キューに滞留するリクエストの最大数 容量制約に達するとリクエストは拒否される 71 Copyright © 2014, Oracle and/or its affiliates. All rights reserved.
  • 72. 過負荷保護機能  サーバの処理能力を超えるリクエストを受入れ続けると過負荷状態に 陥る – システムを過負荷状態から保護・検出するための設定  スレッドプール内の要求数の制限 (共有容量)  HTTPセッション数の制限  メモリ不足例外発生時の終了・低メモリ状態の検出  スタック スレッドの処理 要設定。デフォルトでは何もしない – 過負荷状態のサーバは強制停止・再起動するように設定可能 72 Copyright © 2014, Oracle and/or its affiliates. All rights reserved.
  • 73. データソース 容量の管理がキーポイント  アプリケーションで接続待ちが発生しないことが理想的 – 接続待ちが発生しないように最大容量を設定する  実行スレッド数を目安に設定を開始、負荷状況によって最大容量を決 定する – 原則は初期容量=最大容量  初期容量と最大容量に差があると容量増加時に待ちが発生する可能性 あり 73 Copyright © 2014, Oracle and/or its affiliates. All rights reserved.
  • 74. Tips: 最大容量と最大スレッド数制約 データソースの最大容量を超える実行スレッドの生成を抑制するには?  ワークマネージャの最大スレッド数制約ではデータソースの最大容量 を指定することができる 解消できる問題点: 自動チューニングスレッドプールで負荷 に応じてスレッド数が増えてもデータ ソースの最大容量を超えてしまうと接続 待ちによる処理の遅延が発生する データソース名を指定 データソースの最大容量が容量制約数になる 74 Copyright © 2014, Oracle and/or its affiliates. All rights reserved.
  • 75. 参考: モニタするMBean属性 MBean 属性 JDBCDataSourceRuntime CurrCapacity 必要に応じてHighCountも取得 ActiveConnectionsHighCount WaitingForConnectionHighCount ThreadPoolRuntime アクティブなスレッド数は以下で算出 = ExcecuteTreadTotalCount – ExecuteThreadIdleCount – StandbyThreadCount WorkManager単位でのPending数を取得する 場合はRequestClassRuntime 75 Copyright © 2014, Oracle and/or its affiliates. All rights reserved. ActiveConnectionsCurrentCount WaitingForConnectionCurrentCount ExecuteThreadTotalCount ExecuteThreadIdleCount StandbyThreadCount PendingUserRequestCounts
  • 76. 参考: モニタするMBean属性 MBean 属性 ServerRuntime OpenSocketsCurrentCount WebAppComponentRuntime OpenSessionsCurrentCount StatelessEJBRuntime PooledBeansCurrentCount BeansInUseCurrentCount WaiterCurrentCount JVMRuntime HeapFreeCurrent HeapSizeCurrent 76 Copyright © 2014, Oracle and/or its affiliates. All rights reserved.
  • 77. WebLogic Server トラブルシューティング 77 Copyright © 2014, Oracle and/or its affiliates. All rights reserved.
  • 78. WebLogic Serverトラブルシューティング 開催日 セッション 資料 1月24日 「スローダウン、ハングを一発解決! スレッドダ ンプはトラブルシューティングの味方」 http://www.slideshare.net/yusukey/wlstudy 5月23日 「今日から始めるトラブルシューティング - Flight Recorder入門」 http://www.slideshare.net/OracleMiddleJP/flight-recorder22422966 11月27日 「高負荷試験で得た体験談」 http://www.slideshare.net/OracleMiddleJP/ss-29344482 12月19日 「Oracle WebLogic Serverトラブルシューティング のポイント」 http://www.slideshare.net/OracleMiddleJP/20131219wlstudy-troubleshootinghandsout 12月19日 「Flight Recorder活用の実践」 http://www.slideshare.net/OracleMiddleJP/jfr-fordevelopers 78 Copyright © 2014, Oracle and/or its affiliates. All rights reserved.
  • 79. 目標:トラブルシューティング総合力向上 テーマFlight Recorder トラブルシューティング準備 万一に備えて必要な情報収集や設定を行うためのノウハウを養う。 障害時対応 障害時に適切な情報やツールを活用して原因究明を行う。 Flight Recorder 79 チャレンジ項目 Mission Controlを使用してFlight Recorderイメージファイルから障害 時に遡って状況分析を行う。 Copyright © 2014, Oracle and/or its affiliates. All rights reserved.
  • 80. トラブルシューティング手法 情報収集ツールの比較 利点 考慮事項 ログ サーバーで発生するイベントを時系列で取得可能。ト ラブル発生時の初期情報の収集に最適。 サーバログ … サーバのアクティビティ GCログ … GCの発生頻度 HTTPログ … ユーザリクエスト 情報が各ログファイルに分散しているため一元的に 情報を把握しにくい ・Enterprise Managerを使用すると横串検索可能 Javaスレッドダンプ JVMで行われているスレッド処理のスナップショット を取得。低負荷のため本番環境でも取得可能。 スレッドダンプはテキスト情報のため必要に応じて データ加工の必要あり ・侍, ThreadLogicなど各種ツールを活用 WLDFイメージキャプチャ サーバーの設定、モニタ情報、ログ、スレッドダンプ をまとめて取得可能。WLDFモジュールを設定すれば ルールに基づいて自動的にイメージキャプチャを取得 可能。 イメージキャプチャ取得のオーバーヘッドとディス クサイズを考慮する必要アリ 自動キャプチャにはWLDFモジュールを構成する必 要がある Flight Recorder JVM+WebLogic Serverで発生するイベント詳細レベル で取得。Mission Controlを使用してGUIベースで解析 可能。 常時Flight 記録を取得する場合はディスクサイズを 考慮する必要アリ 80 Copyright © 2014, Oracle and/or its affiliates. All rights reserved.
  • 81. トラブル発生時に集めるべき情報は? ログ情報 TIPS: 拡張フォーマットの設定方法 ( [サーバー]-[ロギング]-[HTTP] ▼詳細 ) 1. フォーマットを 拡張 に変更 2. 拡張ロギング・フォーマットのフィールド を指定 date time c-ip s-ip cs-method cs-uri cs-uri-query sc-status bytes time-taken  WebLogic Serverのログファイル – サーバーログ … <DOMAIN>/servers/<server_name>/logs/<server_name>.log  WebLogic Serverのアクティビティが記録されるログファイル。 – ドメインログ … <DOMAIN>/servers/<admin_server>/logs/<domain_name>.log  サーバーログを集約したもの。障害調査ではあまり使わない。 – HTTPログ … <DOMAIN>/servers/<server_name>/logs/access.log  クライアントからのアクセスを記録。拡張フォーマットを使うとリクエスト処 理時間も取得可能 81 Copyright © 2014, Oracle and/or its affiliates. All rights reserved.
  • 82. Tips: サーバーの標準出力のリダイレクト startWebLogic.sh(cmd)を編集  サーバーの標準出力のリダイレクトは環境変数 WLS_REDIRECT_LOG を指定する WLS_REDIRECT_LOGの設定を追記 82 Copyright © 2014, Oracle and/or its affiliates. All rights reserved.
  • 83. サーバーログの重大度 NOTICE以上のメッセージはデフォルトでドメインログに転送される Severity デバッグメッセージ(Debug=ONの場合) 通常の処理を通知するために使用する低レベルの情報メッセージ NOTICE 重要度の高いINFOメッセージ ○ WARNING 問題のあるオペレーションまたはコンフィグレーションがあったが、通常のオペレーションに支 障は生じない ○ ERROR ユーザ エラーが発生したことを示す。システムまたはアプリケーションでは、割り込みやサー ビスの限定的な低下を起こすことなくエラーに対処できる ○ CRITICAL システム エラーまたはサービス エラーが発生したことを示す。システムを回復できるが、サー ビスの一時的な損失や永久的な低下が発生する場合がある ○ ALERT 83 診断フレームワークからのメッセージ INFO 高 TRACE DEBUG 低 説明 システムの特定のサービスだけが使用不能の状態にある。自動回復を実行できない。この問題を 解決するには管理者がすぐに措置を講じる必要がある ○ EMARGENCY サーバが使用不能な状態にある。この重大度は、重大なシステム障害または問題があることを示 す ○ Copyright © 2014, Oracle and/or its affiliates. All rights reserved. ドメインログ
  • 84. Tips: デバッグ情報 サーバー単位で設定可能 デバッグ属性を選択して 有効化 or 無効化 デバッグ出力例: DebugJDBCSQL(コンソール:weblogic→jdbc→sql→DebugJDBCSQL/WLST ServerDebugMBean) ####<2013/12/15 15時43分43秒 JST> <Debug> <JDBCSQL> <DAOKADA-JP> <ManagedServer1> <[ACTIVE] ExecuteThread: '4' for queue: 'weblogic.kernel.Default (self-tuning)'> <<anonymous>> <BEA100036DDE372208547105> <1b7e5955c26b51de:29038235:142f4fe00cd:-8000-000000000000003e> <1387089823815> <BEA-000000> <[[weblogic.jdbc.wrapper.JTAConnection_weblogic_jdbc_wrapper_XAConnection_oracle_jdbc_driver_LogicalConne ction-hrDataSource-4, oracle.jdbc.driver.LogicalConnection@2460cd3]] prepareStatement(SELECT EMPLOYEE_ID, COMMISSION_PCT, DEPARTMENT_ID, EMAIL, FIRST_NAME, HIRE_DATE, JOB_ID, LAST_NAME, MANAGER_ID, PHONE_NUMBER, SALARY FROM EMPLOYEES WHERE (FIRST_NAME LIKE ? OR LAST_NAME LIKE ?))> 84 Copyright © 2014, Oracle and/or its affiliates. All rights reserved.
  • 85. Tips: GCログオプション 説明 HotSpot JRockit GCログ -verbose:gc -verbose:gc GCログ(詳細) -XX:+PrintGCDetails -Xverbose:gcreport -Xverbose:gcpause GCのタイムスタンプ出力 -XX:+PrintGCTimeStamps -Xverbosetimestamp GCログをファイル出力 -Xloggc:<file_name> -Xverboselog:<file_name> (サーバー起動からの経過時間) [gcpause][Tue May 21 10:42:45 2013][04868] [YC#25] [---] [gcpause][Tue May 21 10:42:45 2013][04868] [YC#25] [con] [gcpause][Tue May 21 10:42:45 2013][04868] [YC#25] [pau] [gcpause][Tue May 21 10:42:45 2013][04868] [YC#25] [con] [gcpause][Tue May 21 10:42:45 2013][04868] [OC#1] [---] [gcpause][Tue May 21 10:42:45 2013][04868] [OC#1] [con] [gcpause][Tue May 21 10:42:45 2013][04868] [OC#1] [pau] [gcpause][Tue May 21 10:42:45 2013][04868] [OC#1] [con] 85 Copyright © 2014, Oracle and/or its affiliates. All rights reserved. 26.105 ms (1236.973000-1236.999000) 0.002 ms (1236.973000-1236.973000) 26.062 ms (1236.973000-1236.999000) 0.008 ms (1236.999000-1236.999000) 45.613 ms (1236.999000-1237.045000) 0.004 ms (1236.999000-1236.999000) 44.730 ms (1236.999000-1237.044000) 0.810 ms (1237.044000-1237.045000) YC YC:PreGC YC:Main YC:PostGC OC:PreGC OC:Main OC:PostGC OC
  • 86. トラブル発生時に集めるべき情報は? Javaスレッドダンプ  スレッドダンプとは スレッドダンプ取得時は 一定間隔で複数回取得 – JVMで実行中のスレッドのスナップショット  スレッドがどんな処理を実行しているのか? – JVMの標準機能  WebLogic Serverの障害解析以外でも活用可能  標準出力(/標準エラー出力)に出力される スレッドダンプはシステムに負荷をかけずに情報収集できる最良のツール 86 Copyright © 2014, Oracle and/or its affiliates. All rights reserved.
  • 87. スレッドダンプの取得方法  OS – CTRL + BREAK / wlsvc -dump -svcname:service-name (Windows) – kill -3 <pid> (Linux/UNIX)  WLST – ThreadDump()  JVM – jstack <pid> (HotSpot) Tips: Javaプロセスのpidは jps コマンドで確認 (HotSpot/Jrockitどちらでも使用可能) – jrcmd <pid> print_threads (JRockit) 87 Copyright © 2014, Oracle and/or its affiliates. All rights reserved.
  • 88. Tips: WebLogic Server診断フレームワーク WebLogic Server全体を監視、診断するための機能 監視データを生成する仕組み インスツルメンテーション データパブリッシャ データプロバイダ (MBean) 構成情報や解析に必要な情報を統合的に取得する仕組み イメージキャプチャ 88 Copyright © 2014, Oracle and/or its affiliates. All rights reserved. 監視対象の設定と通知の仕組み 監視と通知 監視データを取得する仕組み 監視データを 画面表示する 仕組み アクセサ ロガー ハーベスタ データをファイルとして出力する仕組み アーカイバ
  • 89. 障害時に集めるべき情報は? 必要なときに情報が得られるか?  スレッドダンプやGCログはトラブル解決に有益だが… – トラブルが発生した瞬間に取得できるわけではない – 必要な情報が得られない場合もある  Java Flight Recorder – トラブル解決に必要な情報を常時記録可能 (=本番環境でも低負荷) – JVMからアプリケーション(+WLS)まで幅広い情報を記録 トラブルの確実な原因を 「遡って」 追跡可能に トラブルの発生から改善までのサイクルと手間を大きく短縮に 89 Copyright © 2014, Oracle and/or its affiliates. All rights reserved.
  • 90. Java Flight Recorder 全ては記録される WebLogic Server jrcmd/jcmd Applicatio n Application ダンプ依頼 WLST ダンプ依頼 イベント ダンプ依頼 WebLogic イベント JVM Runtime イベント Flight Recorder Runtime 診断イメージ キャプチャ WLDF ルールに基づくダンプトリガー Rotating Buffer 新しいデータ ダンプ依頼 あふれたら移動 Mission Control ダンプ Global Buffer Thread Buffer ダンプ解析 あふれたら移動 古いデータ Disk File 90 Copyright © 2014, Oracle and/or its affiliates. All rights reserved. FlightRecorder.jfr
  • 91. WebLogic ServerとFlight Recorderの連携  WebLogic ServerはFlight Recorderと連携可能 – サーバーで発生したイベントをFlight Recorderに送信 – WLDF診断イメージキャプチャにFlight Recorder記録を含める WLDF イベント イメージキャプチャ 91 Copyright © 2014, Oracle and/or its affiliates. All rights reserved. Flight Recorder
  • 92. Flight Recorder記録 Mission Controlの表示 92 Copyright © 2014, Oracle and/or its affiliates. All rights reserved.
  • 93. JRockit Mission Control MemoryLeak Detector 93 Copyright © 2014, Oracle and/or its affiliates. All rights reserved.
  • 94. 94 Copyright © 2014, Oracle and/or its affiliates. All rights reserved.
  • 95. 95 Copyright © 2014, Oracle and/or its affiliates. All rights reserved.

×