oracle weblogic serverチューニングのポイント
DESCRIPTION
「Oracle WebLogic Serverチューニングのポイント」 Oracle WebLogic Serverのチューニングの第一歩として、スレッド管理をはじめとしたOracle WebLogic Serverの設定とアプリケーションの設定について、基本的なアプローチと設定方法を紹介します。 日本オラクル オラクル・ユニバーシティ 岡田 大輔TRANSCRIPT
Copyright © 2013, Oracle and/or its affiliates. All rights reserved. 1
Oracle WebLogic Server チューニングのポイント
日本オラクル株式会社
オラクルユニバーシティ
岡田 大輔
2013年11月27日
Copyright © 2013, Oracle and/or its affiliates. All rights reserved. 2
以下の事項は、弊社の一般的な製品の方向性に関する概要を説明するものです。また、情報提供を唯一の目的とするものであり、いかなる契約にも組み込むことはできません。以下の事項は、マテリアルやコード、機能を提供することをコミットメント(確約)するものではないため、購買決定を行う際の判断材料になさらないで下さい。オラクル製品に関して記載されている機能の開発、リリースおよび時期については、弊社の裁量により決定されます。
OracleとJavaは、Oracle Corporation 及びその子会社、関連会社の米国及びその他の国における登録商標です。文中の社名、商品名等は各社の商標または登録商標である場合があります。
Copyright © 2013, Oracle and/or its affiliates. All rights reserved. 3
Agenda
WebLogic Serverのチューニング
アプリケーション/サービスのチューニング
Copyright © 2013, Oracle and/or its affiliates. All rights reserved. 4
WebLogic Serverのチューニング
Copyright © 2013, Oracle and/or its affiliates. All rights reserved. 5
チューニングの対象 各レイヤに対して適切なチューニングを行う
H/W
OS
JVM
WebLogic Server
アプリケーション
今回の対象
Copyright © 2013, Oracle and/or its affiliates. All rights reserved. 6
WebLogic Serverのチューニング
チューニングの目的:
主な設定項目
– スレッドプール・ワークマネージャ
– データソースの容量設定
– などなど
WebLogic Serverのリソースを効率的に使用して
最適なパフォーマンスを得る
Copyright © 2013, Oracle and/or its affiliates. All rights reserved. 7
WebLogic Server EAR
WebLogic Serverのリクエスト処理 クライアントからのリクエストはスレッドで処理される
データベース
SocketMuxer
WorkManager
Webコンテナ EJBコンテナ
(フリープール) データ
ソース
7001
単一のスレッドプールの実行スレッドでリクエストを処理
SocketMuxerによって実行スレッドに引き渡される
Muxerキュー
Muxerスレッド
スレッドプール
ワークマネージャ
バックログ
リクエスト受信 リクエスト処理
リクエストはMuxer
キューへ(リスンスレッド)
Copyright © 2013, Oracle and/or its affiliates. All rights reserved. 8
リクエスト受信
接続バックログ: サーバが受け入れることができる接続要求数
バックログ数を超える接続要求は拒否される
– クライアントにConnection Refusedエラーを返す
– 受入数を増加させる場合は『バックログの受入れ』を増やす
接続バックログ
Copyright © 2013, Oracle and/or its affiliates. All rights reserved. 9
SocketMuxer
SocketMuxerは実装を選択可能
– Java Muxer
Pure-Javaソケットリーダースレッド
実行スレッドプールからスレッドを割り当て(デフォルトは33%)
– Native Muxer(デフォルト)
プラットフォーム固有のネイティブソケットリーダースレッド
ソケットリーダスレッドは固定数の専用スレッドを使用
Native Muxerを推奨
Copyright © 2013, Oracle and/or its affiliates. All rights reserved. 10
ソケット数とネイティブIOの設定
NIO Muxerを使用する場合に指定(~12.1.1):
weblogic.socket.NIOSocketMuxer
TIPS: WLS12.1.2はデフォルトでMuxer Class
は有効化されている
Copyright © 2013, Oracle and/or its affiliates. All rights reserved. 11
共有容量
共有容量=待機中のリクエスト+実行中のリクエスト
– 共有容量を超えた場合、リクエストは拒否される
Webアプリケーションへの要求
フェアシェアの低い非トランザクションRIMリクエスト
キューの長さの制限
Copyright © 2013, Oracle and/or its affiliates. All rights reserved. 12
自動チューニングスレッドプール
スレッドプールは自動チューニング (WLS9.x~)
– スレッドは単一のスレッドプールで管理
~WLS8.1のように実行キューとスレッドプールは一体ではない
– 負荷状況に応じてスレッド数が増減する
– 少ないスレッド数で起動可能なため起動時間への影響が少ない
Copyright © 2013, Oracle and/or its affiliates. All rights reserved. 13
スレッドプールのスレッド数を指定するには?
スレッドプールのサイズ指定
– config.xml or WLSTで設定
– サーバの起動オプションでも指定可能
負荷が予め想定できる場合は効果的
set JAVA_OPTIONS=%JAVA_OPTIONS% -Dweblogic.SelfTuningThreadPoolSizeMin=50 -Dweblogic.SelfTuningThreadPoolSizeMax=50
TIPS: WLS12.1.2では管理コンソールで設定可能 ([サーバー]-[サーバー名]-[構成]-[チューニング])
Copyright © 2013, Oracle and/or its affiliates. All rights reserved. 14
Tips: 起動オプションとconfig.xmlの関係
起動スクリプトのオプション指定はconfig.xmlの設定よりも優先される
適用順に注意!
WebLogic Server
ServerMBean
ListenPort: <server> <listen-port> 7003 </listen-port> …
7003 7005 set JAVA_OPTIONS = %JAVA_OPTIONS% -Dweblogic.ListenPort=7005
1. config.xmlを適用
config.xml
setDomainEnv.cmd(sh)など
2. オプションを適用
config.xmlを汚さないので一時的な設定には最適
永続化する設定は、config.xmlに記述すること
Copyright © 2013, Oracle and/or its affiliates. All rights reserved. 15
ワークマネージャとは?
ワークマネージャ=実行スレッドのスケジューリング機能
– アプリケーションごとに柔軟な優先順位の設定が可能に
デフォルト・ワークマネージャ(default)
– リクエストはデフォルト・ワークマネージャが処理
– 必要に応じてカスタムワークマネージャを追加定義可能
グローバルワークマネージャ(config.xml)
アプリケーションスコープワークマネージャ(デプロイメント記述子)
WLS9.xから導入されたスレッドスケジューリング機能
Copyright © 2013, Oracle and/or its affiliates. All rights reserved. 16
ワークマネージャの構成要素
ワークマネージャ
– 要求クラス … フェアシェア、応答時間、コンテキストのうち1つを指定
– 制約 … 最大スレッド数、最小スレッド数、容量を任意で指定
要求クラスと制約
ワークマネージャ 要求クラス
制約 1
制約 2
Copyright © 2013, Oracle and/or its affiliates. All rights reserved. 17
要求クラス リクエストの重みを決定する
要求クラス 説明
フェアシェア要求クラス リクエスト割り当ての重みを指定 フェアシェアは1~1000の任意の数値を指定。
2つのワークマネージャにそれぞれフェアシェア10, 20を設定した場合は1:2の割合でスレッドが割り当てられる
応答時間要求クラス 応答目標時間を指定 2つのワークマネージャにそれぞれ2000ms, 1000msと応答時間を設定した場合は1:2の割合でスレッドが割り当てられる
コンテキスト要求クラス ユーザ/グループ毎に要求クラスを指定 ユーザAにフェアシェア50、ユーザBにフェアシェア100の要求クラスを設定した場合はユーザBのリクエストに多くスレッドが割り当てられる
Copyright © 2013, Oracle and/or its affiliates. All rights reserved. 18
制約 スレッド生成やリクエスト数を制限する
最大スレッド数制約 最大同時実行数 複数ワークマネージャで共有可能
最小スレッド数制約 最小同時実行数 主にデッドロック防止のために使用
容量制約 実行中+キューに滞留するリクエストの最大数 容量制約に達するとリクエストは拒否される
Copyright © 2013, Oracle and/or its affiliates. All rights reserved. 19
ワークマネージャの定義 グローバルワークマネージャ
Copyright © 2013, Oracle and/or its affiliates. All rights reserved. 20
ワークマネージャ
Copyright © 2013, Oracle and/or its affiliates. All rights reserved. 21
要求クラス
単位はミリ秒
フェア・シェア比率は他のフェア・シェアとの相対値
Copyright © 2013, Oracle and/or its affiliates. All rights reserved. 22
制約
Copyright © 2013, Oracle and/or its affiliates. All rights reserved. 23
ワークマネージャの構成
ワークマネージャで使用する要求クラスと制約をそれぞれ設定
スタックスレッドハンドラ:
スタック・スレッドの無視 – スレッドがスタックしてもワークマネージャを停止しない
TIPS: WLS12.1.2では追加設定可能
Copyright © 2013, Oracle and/or its affiliates. All rights reserved. 24
ワークマネージャの割り当て
Webアプリケーション
EJB
デプロイメント記述子で指定
weblogic.xml
web.xml
weblgic-ejb-jar.xml
Webアプリケーション単位で指定
Servlet単位で指定
EJBコンポーネント単位で指定
Copyright © 2013, Oracle and/or its affiliates. All rights reserved. 25
ワークマネージャの割り当て
エンタープライズアプリケーション
デプロイメント記述子で指定
weblogic-application.xml
スタックスレッドハンドラの指定は任意(EJB, Webアプリでも指定可能)
Copyright © 2013, Oracle and/or its affiliates. All rights reserved. 26
過負荷保護機能
サーバの処理能力を超えるリクエストを受入れ続けると過負荷状態に陥る
– システムを過負荷状態から保護・検出するための設定
スレッドプール内の要求数の制限 (共有容量)
HTTPセッション数の制限
メモリ不足例外発生時の終了・低メモリ状態の検出
スタック スレッドの処理
– 過負荷状態のサーバは強制停止・再起動するように設定可能
要設定。デフォルトでは何もしない
Copyright © 2013, Oracle and/or its affiliates. All rights reserved. 27
オーバーロードの設定
FAILURE状態検出時のアクション
- 無視してアクションを実行しない: 何もしない
- このサーバをただちに強制停止する: サーバを停止
- このサーバを中断して必要な処理を実行する: サーバ
を管理モードに
OOME発生時のアクション
- 無視してアクションを実行しない: 何もしない
- サーバ・プロセスを終了する: サーバを停止
低メモリ状態検出のしきい値
→低メモリ状態中はHealthStateがOVERLOADEDになる
- 最大しきい値: 低メモリ状態解消とみなされる比率
- 最小しきい値: 低メモリ状態とみなされる比率
Copyright © 2013, Oracle and/or its affiliates. All rights reserved. 28
WebLogic Server EAR
まとめ リクエスト処理でポイントになる箇所
データベース
クライアント クライアント クライアント クライアント クライアント
SocketMuxer
WorkManager
Webコンテナ EJBコンテナ
(フリープール) データ
ソース
7001
データベースへの接続要求が最大容量を超えると待ちが発生する
SLSBのフリープールサイズが小さいとEJB呼び出しで待ちが発生する
スレッドプールのスレッドがワークマネージャによって使用される
スレッド数は負荷に応じて自動チューニングされる
原則としてMuxerはNativeI/Oを使用
ワークマネージャに最大容量が設定されているとスレッド割り当て待ちが発生する
最大容量を設定しないとスレッド数が増えすぎて適性な性能を得られない場合がある
カスタムワークマネージャを使用する場合はアプリケーション側で指定
Copyright © 2013, Oracle and/or its affiliates. All rights reserved. 29
アプリケーション/サービスのチューニング
Copyright © 2013, Oracle and/or its affiliates. All rights reserved. 30
Webアプリケーション
JSPに関する設定
– JSPは初回アクセス時に.classに変換される = コンパイル発生
– デプロイ前にコンパイル可能
HTTPSessionの設定
– セッションタイムアウト(timeout-secs)はデフォルト 3600 秒
– セッション数を制限したい場合は max-in-memory-sessionsを指定
デフォルトは -1 (無制限)
JSPとHTTPSession
> java weblogic.appc -forceGenreration XXX.war
JSPのリロードチェック間隔などはサーバをプロダクション(本番)モードで起動していれば無効化される
セッション数の上限に達するとSessionCreationExceptionが発生。
→必要に応じて503エラーを返すように設定
Copyright © 2013, Oracle and/or its affiliates. All rights reserved. 31
EJB
Stateless SessionBean
– Beanインスタンスはフリープールで管理
リクエストごとに任意のインスタンスを使用
– プールサイズは同時アクセス数を目安に設定
Stateful SessionBean
– Beanインスタンスはキャッシュで管理
クライアントごとに特定のインスタンスを使用
キャッシュサイズはできるだけ大きく
– パッシベーションが発生しないのがベスト
フリープールとキャッシュ
Copyright © 2013, Oracle and/or its affiliates. All rights reserved. 32
EJBのフリープールとキャッシュ設定 weblogic-ejb-jar.xml
インスタンス生成のオーバヘッドを低減したい場合は initial = maxで設定
TIPS: 実行スレッド数や接続プール容量との関係を考慮すること
idle-timeout-seconds: パッシベーション対象になるまでのアイドル時間(秒)
session-timeout-seconds: パッシベーションされたBeanが削除されるまでの時間(省略可)
Copyright © 2013, Oracle and/or its affiliates. All rights reserved. 33
データソース
アプリケーションで接続待ちが発生しないことが理想的
– 接続待ちが発生しないように最大容量を設定する
実行スレッド数を目安に設定を開始、負荷状況によって最大容量を決定する
– 原則は初期容量=最大容量
初期容量と最大容量に差があると容量増加時に待ちが発生する可能性あり
容量の管理がキーポイント
Copyright © 2013, Oracle and/or its affiliates. All rights reserved. 34
Tips: 最大容量と最大スレッド数制約
ワークマネージャの最大スレッド数制約ではデータソースの最大容量を指定することができる
データソースの最大容量を超える実行スレッドの生成を抑制するには?
データソース名を指定
データソースの最大容量が容量制約数になる
解消できる問題点: 自動チューニングスレッドプールで負荷に応じてスレッド数が増えてもデータソースの最大容量を超えてしまうと接続待ちによる処理の遅延が発生する
Copyright © 2013, Oracle and/or its affiliates. All rights reserved. 35
その他のデータソース設定
PreparedStatementはキャッシュ可能
– キャッシュ数とキャッシュアルゴリズム(LRU/Fixed)を指定
リクエスト処理でDBアクセス頻度が高い場合はPinnedToThreadを検討
– 実行スレッドとConnectionを関連付けてConnection予約のオーバーヘッドを低減 (最大容量=実行スレッド数になる)
JMS+DBアクセスで2PCになる場合はLLRを検討
– LLRに参加するデータソースは非XAで処理を行うため処理効率は高くなる
信頼性は2PCと同じ (ただし参加できるDBリソースは1つのみ)
StatementCache、PinnedToThreadとLLR
Copyright © 2013, Oracle and/or its affiliates. All rights reserved. 36
参考: モニタするMBean属性
MBean 属性
JDBCDataSourceRuntime CurrCapacity
ActiveConnectionsCurrentCount
WaitingForConnectionCurrentCount
ThreadPoolRuntime ExecuteThreadTotalCount
ExecuteThreadIdleCount
StandbyThreadCount
PendingUserRequestCounts WorkManager単位でのPending数を取得する場合はRequestClassRuntime
必要に応じてHighCountも取得
ActiveConnectionsHighCount
WaitingForConnectionHighCount
アクティブなスレッド数は以下で算出 ExcecuteTreadTotalCount - ExecuteThreadIdleCount
Copyright © 2013, Oracle and/or its affiliates. All rights reserved. 37
参考: モニタするMBean属性
MBean 属性
ServerRuntime OpenSocketsCurrentCount
WebAppComponentRuntime OpenSessionsCurrentCount
StatelessEJBRuntime PooledBeansCurrentCount
BeansInUseCurrentCount
WaiterCurrentCount
JVMRuntime HeapFreeCurrent
HeapSizeCurrent
Copyright © 2013, Oracle and/or its affiliates. All rights reserved. 38
Tips: HTTPリクエストの処理時間の取得
アクセスログの拡張フォーマットを使用するとHTTPリクエストの処理時間を取得可能
HTTPアクセスログの拡張フォーマットを利用
フォーマットを 拡張 に変更
フォーマット(例):
date time c-ip s-ip cs-method cs-uri cs-uri-query sc-status bytes time-taken
Copyright © 2013, Oracle and/or its affiliates. All rights reserved. 39
まとめ
WebLogic Serverでは自動チューニング機能や過負荷保護機能などリソースを効率良く使用する機能があります
– デフォルト設定でもある程度の性能が得られますがWebLogic Serverのリクエスト処理を把握して設定を行えばより効率的な処理を実行できます
– WebLogic Serverだけでなくアプリケーション実装のチューニングも実施してください
やっぱりチューニングは総合力。 WebLogic Serverの基礎をしっかり固めてステップアップしましょう
Copyright © 2013, Oracle and/or its affiliates. All rights reserved. 40
Oracle Universityからのお知らせ
WebLogic Serverの管理方法を体系的に学習したい方に最適な研修コースをご提供しています。
– Classroomトレーニングだけでなく、Live Virtual Classや『Oracle トレーニング・オンデマンド』など多様な受講形態から選択いただけます。
Copyright © 2013, Oracle and/or its affiliates. All rights reserved. 41
Oracle WebLogic Server 11g: 管理コースを90日間いつでも何度でも。
新時代のラーニングソリューション •インターネット経由でお好きな時間にお好きな場所で
• 実際の講義をそのまま収録してストリーミング配信
•教室と同じ演習環境を6日間使用可能
•担当講師による Q&A
•eKit(電子媒体テキスト)付き
Oracle WebLogic Server 11g の学習は Oracle トレーニング・オンデマンドで!
いまなら無償体験版を視聴可能です!
Copyright © 2013, Oracle and/or its affiliates. All rights reserved. 42
コース内容
■Oracle WebLogic Server概要
■ドメインの作成
■Administration Console
■ドメインのモニタリング
■アプリケーションのデプロイメント
■WebLogic Server セキュリティ
■ドメインのバックアップおよびリカバリ
■WebLogic Serverのインストールおよびパッチ適用
■サーバーの起動および停止
■JDBCデータソースの構成
■ノードマネージャ
■WebLogic Serverクラスタリング
■トランザクション・サービスのコンフィグレーション
受講前提条件 ・Linux の基本的な操作方法の理解 ・Java EE の基礎知識(サーブレットや JSP など) ※推奨
対象者 ・Oracle WebLogic Server 管理者
・Javaアプリケーション開発者
・アーキテクト
コース日程 5日間 日程の詳細は Oracle University Webサイト にてご確認ください。
受講料 定価¥374,850(税込) ※Oracle PartnerNetwork会員様は、パートナー割引価格で受講いただけます。
Oracle WebLogic Server 12c の運用管理スキルをしっかり習得 待望のWebLogic Server 12c(12.1.2)対応研修がいよいよ提供開始です。
このコースでは、アプリケーション・サーバー管理者がOracle WebLogic Server 12cのインストールおよび設定方法を習得することができ
ます。管理コンソールやコマンドラインツール(WLST)などを使用してドメインを構成する方法やJava EEアプリケーションをサーバー
にデプロイする方法についても説明します。さらに、Oracle WebLogic Server のプロキシとしてOracle HTTP Serverを設定し、WebLogic
Serverクラスタによるアプリケーションのフェイルオーバーとロードバランシングをサポートする方法など、環境構築に必要なスキルと
WebLogic Serverのモニタリングやログ情報の収集など運用に必要なスキルを実機演習を通して習得できます。さらに、Oracle WebLogic
Server 12cで強化されたActive GridLink for RACの構成方法やWebLogic Server 12.1.2から使用可能な動的クラスタなど注目の新機能もカバ
ーします。
Oracle WebLogic Server 12c: 管理 I
ミドルウェア
開催日程 ■2014/1/20(月) – 1/24(金) トレーニングキャンパス赤坂
Copyright © 2013, Oracle and/or its affiliates. All rights reserved. 43
キャンペーンのご案内:
OCJP Gold SE 7 試験限定 再受験可能受験チケット発売
万が一試験に不合格になってしまっても同一試験に再挑戦可能な受験チケットを特別販売します。この機会にJava認定資格に挑戦してみてください!
– 対象試験:
Java SE 7 Programmer II (1Z0-804) / Upgrade to Java SE 7 Programmer(1Z0-805)
– 販売期間: 2013年12月2日(月) ~ 2014年2月28日(金)
枚数限定(200枚)販売につき予定数に達した場合は販売を終了します。予めご了承ください
OCJP Gold SE 7 試験受験を検討されている皆さまに朗報です!
お問い合せは オラクルユニバーシティ まで
http://www.oracle.com/jp/education/ Tel: 0120-155-092
Copyright © 2013, Oracle and/or its affiliates. All rights reserved. 44
Copyright © 2013, Oracle and/or its affiliates. All rights reserved. 45