WebLogic Serverチューニングのポイント
-
Upload
oracle-fusion-middleware -
Category
Documents
-
view
4.125 -
download
11
description
Transcript of WebLogic Serverチューニングのポイント
Copyright © 2012, Oracle and/or its affiliates. All rights reserved. 1
Oracle WebLogic Server チューニングのポイント
日本オラクル株式会社
オラクルユニバーシティ
岡田 大輔
Copyright © 2012, Oracle and/or its affiliates. All rights reserved. 2
以下の事項は、弊社の一般的な製品の方向性に関する概要を説明するものです。また、情報提供を唯一の目的とするものであり、いかなる契約にも組み込むことはできません。以下の事項は、マテリアルやコード、機能を提供することをコミットメント(確約)するものではないため、購買決定を行う際の判断材料になさらないで下さい。オラクル製品に関して記載されている機能の開発、リリースおよび時期については、弊社の裁量により決定されます。
OracleとJavaは、Oracle Corporation 及びその子会社、関連会社の米国及びその他の国における登録商標です。文中の社名、商品名等は各社の商標または登録商標である場合があります。
Copyright © 2012, Oracle and/or its affiliates. All rights reserved. 3
Agenda
WebLogic Serverのチューニング
アプリケーション/サービスのチューニング
Copyright © 2012, Oracle and/or its affiliates. All rights reserved. 4
WebLogic Serverのチューニング
Copyright © 2012, Oracle and/or its affiliates. All rights reserved. 5
チューニングの対象 各レイヤに対して適切なチューニングを行う
H/W
OS
JVM
WebLogic Server
アプリケーション
今回の対象
Copyright © 2012, Oracle and/or its affiliates. All rights reserved. 6
WebLogic Serverのチューニング
チューニングの目的:
主な設定項目
– スレッドプール・ワークマネージャ
– データソースの容量設定
WebLogic Serverのリソースを効率的に使用して
最適なパフォーマンスを得る
Copyright © 2012, Oracle and/or its affiliates. All rights reserved. 7
WebLogic Server EAR
WebLogic Serverのリクエスト処理 クライアントからのリクエストはスレッドで処理される
データベース
SocketMuxer
WorkManager
Webコンテナ EJBコンテナ
(フリープール) データ
ソース
7001
単一のスレッドプールの実行スレッドでリクエストを処理
SocketMuxerによって実行スレッドに引き渡される
Muxerキュー
Muxerスレッド
スレッドプール
ワークマネージャ
バックログ
リクエストはMuxer
キューへ(リスンスレッド)
Copyright © 2012, Oracle and/or its affiliates. All rights reserved. 8
リクエスト受信
接続バックログ: サーバが受け入れることができる接続数(ソケットのListenキュー)
バックログ数を超える接続要求は拒否される
– クライアントにConnection Refusedエラーを返す
– 受入数を増加させる場合は『バックログの受入れ』を増やす
接続バックログ
Copyright © 2012, Oracle and/or its affiliates. All rights reserved. 9
SocketMuxer
SocketMuxerは実装を選択可能
– Java Muxer
Pure-Javaソケットリーダースレッド
実行スレッドプールからスレッドを割り当て(デフォルトは33%)
– Native Muxer(デフォルト)
プラットフォーム固有のネイティブソケットリーダースレッド
ソケットリーダスレッドは固定数の専用スレッドを使用
Native Muxerを推奨
Copyright © 2012, Oracle and/or its affiliates. All rights reserved. 10
ソケット数とネイティブIOの設定
NIO Muxerを使用する場合に指定:
weblogic.socket.NIOSocketMuxer
Copyright © 2012, Oracle and/or its affiliates. All rights reserved. 11
共有容量
共有容量=待機中のリクエスト+実行中のリクエスト
– 共有容量を超えた場合、リクエストは拒否される
Webアプリケーションへの要求
フェアシェアの低い非トランザクションRIMリクエスト
キューの長さの制限
Copyright © 2012, Oracle and/or its affiliates. All rights reserved. 12
自動チューニングスレッドプール
スレッドプールは自動チューニング (WLS9.x~)
– スレッドは単一のスレッドプールで管理
~WLS8.1のように実行キューとスレッドプールは一体ではない
– 負荷状況に応じてスレッド数が増減する
– 少ないスレッド数で起動可能なため起動時間への影響が少ない
Copyright © 2012, Oracle and/or its affiliates. All rights reserved. 13
スレッドプールのスレッド数を指定するには?
スレッドプールのサイズ指定
– config.xmlに直接記述もしくはWLSTで設定(ServerMBean)
– サーバの起動オプションでも指定可能
負荷が予め想定できる場合は効果的
set JAVA_OPTIONS=%JAVA_OPTIONS% -Dweblogic.SelfTuningThreadPoolSizeMin=50 -Dweblogic.SelfTuningThreadPoolSizeMax=50
※当日配布資料が間違っていました。正しくはこちら↑です。
Copyright © 2012, 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 © 2012, Oracle and/or its affiliates. All rights reserved. 15
ワークマネージャとは?
ワークマネージャ=実行スレッドのスケジューリング機能
– アプリケーションごとに柔軟な優先順位の設定が可能に
デフォルト・ワークマネージャ(default)
– リクエストはデフォルト・ワークマネージャが処理
– 必要に応じてカスタムワークマネージャを追加定義可能
グローバルワークマネージャ(config.xml)
アプリケーションスコープワークマネージャ(デプロイメント記述子)
WLS9.xから導入されたスレッドスケジューリング機能
Copyright © 2012, Oracle and/or its affiliates. All rights reserved. 16
ワークマネージャの構成要素
ワークマネージャ
– 要求クラス … フェアシェア、応答時間、コンテキストのうち1つを指定
– 制約 … 最大スレッド数、最小スレッド数、容量を任意で指定
要求クラスと制約
ワークマネージャ 要求クラス
制約 1
制約 2
Copyright © 2012, 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 © 2012, Oracle and/or its affiliates. All rights reserved. 18
制約 スレッド生成やリクエスト数を制限する
最大スレッド数制約 最大同時実行数 複数ワークマネージャで共有可能
最小スレッド数制約 最小同時実行数 主にデッドロック防止のために使用
容量制約 実行中+キューに滞留するリクエストの最大数 容量制約に達するとリクエストは拒否される
Copyright © 2012, Oracle and/or its affiliates. All rights reserved. 19
ワークマネージャの定義 グローバルワークマネージャ
Copyright © 2012, Oracle and/or its affiliates. All rights reserved. 20
ワークマネージャ
Copyright © 2012, Oracle and/or its affiliates. All rights reserved. 21
要求クラス
単位はミリ秒
フェア・シェア比率は他のフェア・シェアとの相対値
Copyright © 2012, Oracle and/or its affiliates. All rights reserved. 22
制約
Copyright © 2012, Oracle and/or its affiliates. All rights reserved. 23
ワークマネージャの構成
ワークマネージャで使用する要求クラスと制約をそれぞれ設定
スタックスレッドハンドラ
スタック・スレッドの無視 – スレッドがスタックしてもワークマネージャを停止しない
Copyright © 2012, Oracle and/or its affiliates. All rights reserved. 24
ワークマネージャの割り当て
Webアプリケーション
EJB
デプロイメント記述子で指定
weblogic.xml
web.xml
weblgic-ejb-jar.xml
Webアプリケーション単位で指定
Servlet単位で指定
EJBコンポーネント単位で指定
Copyright © 2012, Oracle and/or its affiliates. All rights reserved. 25
ワークマネージャの割り当て
エンタープライズアプリケーション
デプロイメント記述子で指定
weblogic-application.xml
スタックスレッドハンドラの指定は任意(EJB, Webアプリでも指定可能)
Copyright © 2012, Oracle and/or its affiliates. All rights reserved. 26
過負荷保護機能
サーバの処理能力を超えるリクエストを受入れ続けると過負荷状態に陥る
– システムを過負荷状態から保護・検出するための設定
スレッドプール内の要求数の制限 (共有容量)
HTTPセッション数の制限
メモリ不足例外発生時の終了・低メモリ状態の検出
スタック スレッドの処理
– 過負荷状態のサーバは強制停止・再起動するように設定可能
Copyright © 2012, Oracle and/or its affiliates. All rights reserved. 27
オーバーロードの設定
FAILURE状態検出時のアクション
- 無視してアクションを実行しない: 何もしない
- このサーバをただちに強制停止する: サーバを停止
- このサーバを中断して必要な処理を実行する: サーバ
を管理モードに
OOME発生時のアクション
- 無視してアクションを実行しない: 何もしない
- サーバ・プロセスを終了する: サーバを停止
低メモリ状態検出のしきい値
→低メモリ状態中はHealthStateがOVERLOADEDになる
- 最大しきい値: 低メモリ状態解消とみなされる比率
- 最小しきい値: 低メモリ状態とみなされる比率
Copyright © 2012, Oracle and/or its affiliates. All rights reserved. 28
WebLogic Server EAR
まとめ リクエスト処理でポイントになる箇所
データベース
クライアント クライアント クライアント クライアント クライアント
SocketMuxer
WorkManager
Webコンテナ EJBコンテナ
(フリープール) データ
ソース
7001
データベースへの接続要求が最大容量を超えると待ちが発生する
SLSBのフリープールサイズが小さいとEJB呼び出しで待ちが発生する
スレッドプールのスレッドがワークマネージャによって使用される
スレッド数は負荷に応じて自動チューニングされる
原則としてMuxerはNativeI/Oを使用
ワークマネージャに最大容量が設定されているとスレッド割り当て待ちが発生する
最大容量を設定しないとスレッド数が増えすぎて適性な負荷を得られない場合がある
カスタムワークマネージャを使用する場合はアプリケーション側で指定
Copyright © 2012, Oracle and/or its affiliates. All rights reserved. 29
アプリケーション/サービスのチューニング
Copyright © 2012, 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のリロードチェック間隔などはサーバをプロダクション(本番)モードで起動していれば無効化される
Copyright © 2012, Oracle and/or its affiliates. All rights reserved. 31
EJB
Stateless SessionBean
– Beanインスタンスはフリープールで管理
リクエストごとに任意のインスタンスを使用
– プールサイズは同時アクセス数を目安に設定
Stateful SessionBean
– Beanインスタンスはキャッシュで管理
クライアントごとに特定のインスタンスを使用
キャッシュサイズはできるだけ大きく
– パッシベーションが発生しないのがベスト
フリープールとキャッシュ
Copyright © 2012, Oracle and/or its affiliates. All rights reserved. 32
EJBのフリープールとキャッシュ設定 weblogic-ejb-jar.xml
インスタンス生成のオーバヘッドを低減したい場合は initial = maxで設定
idle-timeout-seconds: パッシベーション対象になるまでのアイドル時間(秒)
session-timeout-seconds: パッシベーションされたBeanが削除されるまでの時間(省略可)
Copyright © 2012, Oracle and/or its affiliates. All rights reserved. 33
データソース
アプリケーションで接続待ちが発生しないことが理想的
– 接続待ちが発生しないように最大容量を設定する
実行スレッド数を目安に設定を開始、負荷状況によって最大容量を決定する
– 原則は初期容量=最大容量
初期容量と最大容量に差があると容量増加時に待ちが発生する可能性あり
容量の管理がキーポイント
Copyright © 2012, Oracle and/or its affiliates. All rights reserved. 34
Tips: 最大容量と最大スレッド数制約
ワークマネージャの最大スレッド数制約ではデータソースの最大容量を指定することができる
データソースの最大容量を超える実行スレッドの生成を抑制するには?
データソース名を指定
データソースの最大容量が容量制約数になる
解消できる問題点: 自動チューニングスレッドプールで負荷に応じてスレッド数が増えてもデータソースの最大容量を超えてしまうと接続待ちによる処理の遅延が発生する
Copyright © 2012, 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 © 2012, Oracle and/or its affiliates. All rights reserved. 36
参考: モニタするMBean属性
MBean 属性
JDBCDataSourceRuntime CurrCapacity
ActiveConnectionsCurrentCount
WaitingForConnectionCurrentCount
ThreadPoolRuntime ExecuteThreadTotalCount
ExecuteThreadIdleCount
StandbyThreadCount
PendingUserRequestCounts
Copyright © 2012, Oracle and/or its affiliates. All rights reserved. 37
参考: モニタするMBean属性
MBean 属性
ServerRuntime OpenSocketsCurrentCount
WebAppComponentRuntime OpenSessionsCurrentCount
StatelessEJBRuntime PooledBeansCurrentCount
BeansInUseCurrentCount
WaiterCurrentCount
JVMRuntime HeapFreeCurrent
HeapSizeCurrent
Copyright © 2012, 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 © 2012, Oracle and/or its affiliates. All rights reserved. 39
まとめ
WebLogic Serverでは自動チューニング機能や過負荷保護機能などリソースを効率良く使用する機能があります
– デフォルト設定でもある程度の性能が得られますがWebLogic Serverのリクエスト処理を把握して設定を行えばより効率的な処理を実行できます
– WebLogic Serverだけでなくアプリケーション実装のチューニングも実施してください
チューニングは総合力。 WebLogic Serverの基礎をしっかり固めてステップアップしましょう
Copyright © 2012, Oracle and/or its affiliates. All rights reserved. 40
Oracle Universityからのお知らせ
WebLogic Serverの管理方法を体系的に学習したい方に最適な研修コースをご提供しています。
– Classroomトレーニングだけでなく、Live Virtual Classや『Oracle トレーニング・オンデマンド』など多様な受講形態から選択いただけます。
40
Copyright © 2012, Oracle and/or its affiliates. All rights reserved. 41
コース内容
■Oracle Fusion Middleware の概要 ■WebLogic Serverのアーキテクチャ
■Oracle WebLogic Serverのインストール ■管理コンソールおよび他の管理ツールの概要
■WebLogic Server ドメインのコンフィグレーション ■Oracle WebLogic Server の管理およびロギングの使用
■アプリケーションのデプロイ ■データソース、JDBCドライバ、接続プールの設定
■JMS アプリケーションのコンフィグレーション ■WebLogic Serverの基本セキュリティのコンフィグレーション
■Oracle HTTP Server のコンフィグレーション ■Oracle WebLogic クラスタのコンフィグレーション
■バックアップおよびリカバリの管理 ■全体バックアップ、増分バックアップ
受講
前提条件
・Linux の基本コマンドおよびデスクトップのナビゲーション
・クライアント/サーバーの概念における TCP/IP ネットワークに関する基本的な知識
・Java EE の基礎知識(サーブレットや JSP など) ※推奨
対象者 ・Oracle WebLogic Server 11g/12c管理者
・Javaアプリケーション開発者
コース日程 5日間 日程の詳細は Oracle University Webサイト にてご確認ください。
受講料 定価¥363,825(税込) ※Oracle PartnerNetwork会員様は、パートナー割引価格で受講いただけます。
Oracle Application Gridの基盤を支える Oracle WebLogic Server 11gの管理コース!
このコースでは、Web管理者がOracle WebLogic Server 11gのインストールおよび設定する方法に
ついて説明します。Web管理者が管理コンソールやコマンドライン、およびスクリプトツール(
WLST)などを使用して、Java EEアプリケーションをOracle WebLogic Server 11gにデプロイする方
法についても説明します。
その他に、Oracle WebLogic Server のWebインタフェースとしてOracle HTTP Serverを設定する方
法を解説し、またOracle WebLogic Serverクラスタを設定してアプリケーションのフェイルオーバ
ーとロードバランシングをサポートする方法を学習します。また、WebLogic Server管理者の管理
タスクの概要について説明します。
Oracle WebLogic Server 11g: 管理
ミドルウェア
次回開催日程 ■10/15(月) – 10/19(金) トレーニングキャンパス青山
■12/10(月) – 12/14(金) トレーニングキャンパス大阪
Copyright © 2012, Oracle and/or its affiliates. All rights reserved. 42
WebLogic Server勉強会 参加者の皆さまの特典 http://education.oracle.co.jp/campaign_wlstudy/
Copyright © 2012, Oracle and/or its affiliates. All rights reserved. 43
Copyright © 2012, Oracle and/or its affiliates. All rights reserved. 44