WebLogic Serverチューニングのポイント

44
Copyright © 2012, Oracle and/or its affiliates. All rights reserved. 1 Oracle WebLogic Server チューニングのポイント 日本オラクル株式会社 オラクルユニバーシティ 岡田 大輔

description

WebLogic Serverの運用を行う際に押さえておきたいチューニングのポイントについて、スレッド管理やJDBCデータソースをはじめとしたWebLogic Serverの設定とアプリケーションの設定の二つの観点から紹介します。 日本オラクル株式会社 オラクル ユニバーシティ 岡田 大輔

Transcript of WebLogic Serverチューニングのポイント

Page 1: WebLogic Serverチューニングのポイント

Copyright © 2012, Oracle and/or its affiliates. All rights reserved. 1

Oracle WebLogic Server チューニングのポイント

日本オラクル株式会社

オラクルユニバーシティ

岡田 大輔

Page 2: WebLogic Serverチューニングのポイント

Copyright © 2012, Oracle and/or its affiliates. All rights reserved. 2

以下の事項は、弊社の一般的な製品の方向性に関する概要を説明するものです。また、情報提供を唯一の目的とするものであり、いかなる契約にも組み込むことはできません。以下の事項は、マテリアルやコード、機能を提供することをコミットメント(確約)するものではないため、購買決定を行う際の判断材料になさらないで下さい。オラクル製品に関して記載されている機能の開発、リリースおよび時期については、弊社の裁量により決定されます。

OracleとJavaは、Oracle Corporation 及びその子会社、関連会社の米国及びその他の国における登録商標です。文中の社名、商品名等は各社の商標または登録商標である場合があります。

Page 3: WebLogic Serverチューニングのポイント

Copyright © 2012, Oracle and/or its affiliates. All rights reserved. 3

Agenda

WebLogic Serverのチューニング

アプリケーション/サービスのチューニング

Page 4: WebLogic Serverチューニングのポイント

Copyright © 2012, Oracle and/or its affiliates. All rights reserved. 4

WebLogic Serverのチューニング

Page 5: WebLogic Serverチューニングのポイント

Copyright © 2012, Oracle and/or its affiliates. All rights reserved. 5

チューニングの対象 各レイヤに対して適切なチューニングを行う

H/W

OS

JVM

WebLogic Server

アプリケーション

今回の対象

Page 6: WebLogic Serverチューニングのポイント

Copyright © 2012, Oracle and/or its affiliates. All rights reserved. 6

WebLogic Serverのチューニング

チューニングの目的:

主な設定項目

– スレッドプール・ワークマネージャ

– データソースの容量設定

WebLogic Serverのリソースを効率的に使用して

最適なパフォーマンスを得る

Page 7: 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

キューへ(リスンスレッド)

Page 8: WebLogic Serverチューニングのポイント

Copyright © 2012, Oracle and/or its affiliates. All rights reserved. 8

リクエスト受信

接続バックログ: サーバが受け入れることができる接続数(ソケットのListenキュー)

バックログ数を超える接続要求は拒否される

– クライアントにConnection Refusedエラーを返す

– 受入数を増加させる場合は『バックログの受入れ』を増やす

接続バックログ

Page 9: WebLogic Serverチューニングのポイント

Copyright © 2012, Oracle and/or its affiliates. All rights reserved. 9

SocketMuxer

SocketMuxerは実装を選択可能

– Java Muxer

Pure-Javaソケットリーダースレッド

実行スレッドプールからスレッドを割り当て(デフォルトは33%)

– Native Muxer(デフォルト)

プラットフォーム固有のネイティブソケットリーダースレッド

ソケットリーダスレッドは固定数の専用スレッドを使用

Native Muxerを推奨

Page 10: WebLogic Serverチューニングのポイント

Copyright © 2012, Oracle and/or its affiliates. All rights reserved. 10

ソケット数とネイティブIOの設定

NIO Muxerを使用する場合に指定:

weblogic.socket.NIOSocketMuxer

Page 11: WebLogic Serverチューニングのポイント

Copyright © 2012, Oracle and/or its affiliates. All rights reserved. 11

共有容量

共有容量=待機中のリクエスト+実行中のリクエスト

– 共有容量を超えた場合、リクエストは拒否される

Webアプリケーションへの要求

フェアシェアの低い非トランザクションRIMリクエスト

キューの長さの制限

Page 12: WebLogic Serverチューニングのポイント

Copyright © 2012, Oracle and/or its affiliates. All rights reserved. 12

自動チューニングスレッドプール

スレッドプールは自動チューニング (WLS9.x~)

– スレッドは単一のスレッドプールで管理

~WLS8.1のように実行キューとスレッドプールは一体ではない

– 負荷状況に応じてスレッド数が増減する

– 少ないスレッド数で起動可能なため起動時間への影響が少ない

Page 13: WebLogic Serverチューニングのポイント

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

※当日配布資料が間違っていました。正しくはこちら↑です。

Page 14: WebLogic Serverチューニングのポイント

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に記述すること

Page 15: WebLogic Serverチューニングのポイント

Copyright © 2012, Oracle and/or its affiliates. All rights reserved. 15

ワークマネージャとは?

ワークマネージャ=実行スレッドのスケジューリング機能

– アプリケーションごとに柔軟な優先順位の設定が可能に

デフォルト・ワークマネージャ(default)

– リクエストはデフォルト・ワークマネージャが処理

– 必要に応じてカスタムワークマネージャを追加定義可能

グローバルワークマネージャ(config.xml)

アプリケーションスコープワークマネージャ(デプロイメント記述子)

WLS9.xから導入されたスレッドスケジューリング機能

Page 16: WebLogic Serverチューニングのポイント

Copyright © 2012, Oracle and/or its affiliates. All rights reserved. 16

ワークマネージャの構成要素

ワークマネージャ

– 要求クラス … フェアシェア、応答時間、コンテキストのうち1つを指定

– 制約 … 最大スレッド数、最小スレッド数、容量を任意で指定

要求クラスと制約

ワークマネージャ 要求クラス

制約 1

制約 2

Page 17: WebLogic Serverチューニングのポイント

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のリクエストに多くスレッドが割り当てられる

Page 18: WebLogic Serverチューニングのポイント

Copyright © 2012, Oracle and/or its affiliates. All rights reserved. 18

制約 スレッド生成やリクエスト数を制限する

最大スレッド数制約 最大同時実行数 複数ワークマネージャで共有可能

最小スレッド数制約 最小同時実行数 主にデッドロック防止のために使用

容量制約 実行中+キューに滞留するリクエストの最大数 容量制約に達するとリクエストは拒否される

Page 19: WebLogic Serverチューニングのポイント

Copyright © 2012, Oracle and/or its affiliates. All rights reserved. 19

ワークマネージャの定義 グローバルワークマネージャ

Page 20: WebLogic Serverチューニングのポイント

Copyright © 2012, Oracle and/or its affiliates. All rights reserved. 20

ワークマネージャ

Page 21: WebLogic Serverチューニングのポイント

Copyright © 2012, Oracle and/or its affiliates. All rights reserved. 21

要求クラス

単位はミリ秒

フェア・シェア比率は他のフェア・シェアとの相対値

Page 22: WebLogic Serverチューニングのポイント

Copyright © 2012, Oracle and/or its affiliates. All rights reserved. 22

制約

Page 23: WebLogic Serverチューニングのポイント

Copyright © 2012, Oracle and/or its affiliates. All rights reserved. 23

ワークマネージャの構成

ワークマネージャで使用する要求クラスと制約をそれぞれ設定

スタックスレッドハンドラ

スタック・スレッドの無視 – スレッドがスタックしてもワークマネージャを停止しない

Page 24: WebLogic Serverチューニングのポイント

Copyright © 2012, Oracle and/or its affiliates. All rights reserved. 24

ワークマネージャの割り当て

Webアプリケーション

EJB

デプロイメント記述子で指定

weblogic.xml

web.xml

weblgic-ejb-jar.xml

Webアプリケーション単位で指定

Servlet単位で指定

EJBコンポーネント単位で指定

Page 25: WebLogic Serverチューニングのポイント

Copyright © 2012, Oracle and/or its affiliates. All rights reserved. 25

ワークマネージャの割り当て

エンタープライズアプリケーション

デプロイメント記述子で指定

weblogic-application.xml

スタックスレッドハンドラの指定は任意(EJB, Webアプリでも指定可能)

Page 26: WebLogic Serverチューニングのポイント

Copyright © 2012, Oracle and/or its affiliates. All rights reserved. 26

過負荷保護機能

サーバの処理能力を超えるリクエストを受入れ続けると過負荷状態に陥る

– システムを過負荷状態から保護・検出するための設定

スレッドプール内の要求数の制限 (共有容量)

HTTPセッション数の制限

メモリ不足例外発生時の終了・低メモリ状態の検出

スタック スレッドの処理

– 過負荷状態のサーバは強制停止・再起動するように設定可能

Page 27: WebLogic Serverチューニングのポイント

Copyright © 2012, Oracle and/or its affiliates. All rights reserved. 27

オーバーロードの設定

FAILURE状態検出時のアクション

- 無視してアクションを実行しない: 何もしない

- このサーバをただちに強制停止する: サーバを停止

- このサーバを中断して必要な処理を実行する: サーバ

を管理モードに

OOME発生時のアクション

- 無視してアクションを実行しない: 何もしない

- サーバ・プロセスを終了する: サーバを停止

低メモリ状態検出のしきい値

→低メモリ状態中はHealthStateがOVERLOADEDになる

- 最大しきい値: 低メモリ状態解消とみなされる比率

- 最小しきい値: 低メモリ状態とみなされる比率

Page 28: WebLogic Serverチューニングのポイント

Copyright © 2012, Oracle and/or its affiliates. All rights reserved. 28

WebLogic Server EAR

まとめ リクエスト処理でポイントになる箇所

データベース

クライアント クライアント クライアント クライアント クライアント

SocketMuxer

WorkManager

Webコンテナ EJBコンテナ

(フリープール) データ

ソース

7001

データベースへの接続要求が最大容量を超えると待ちが発生する

SLSBのフリープールサイズが小さいとEJB呼び出しで待ちが発生する

スレッドプールのスレッドがワークマネージャによって使用される

スレッド数は負荷に応じて自動チューニングされる

原則としてMuxerはNativeI/Oを使用

ワークマネージャに最大容量が設定されているとスレッド割り当て待ちが発生する

最大容量を設定しないとスレッド数が増えすぎて適性な負荷を得られない場合がある

カスタムワークマネージャを使用する場合はアプリケーション側で指定

Page 29: WebLogic Serverチューニングのポイント

Copyright © 2012, Oracle and/or its affiliates. All rights reserved. 29

アプリケーション/サービスのチューニング

Page 30: WebLogic Serverチューニングのポイント

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のリロードチェック間隔などはサーバをプロダクション(本番)モードで起動していれば無効化される

Page 31: WebLogic Serverチューニングのポイント

Copyright © 2012, Oracle and/or its affiliates. All rights reserved. 31

EJB

Stateless SessionBean

– Beanインスタンスはフリープールで管理

リクエストごとに任意のインスタンスを使用

– プールサイズは同時アクセス数を目安に設定

Stateful SessionBean

– Beanインスタンスはキャッシュで管理

クライアントごとに特定のインスタンスを使用

キャッシュサイズはできるだけ大きく

– パッシベーションが発生しないのがベスト

フリープールとキャッシュ

Page 32: WebLogic Serverチューニングのポイント

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が削除されるまでの時間(省略可)

Page 33: WebLogic Serverチューニングのポイント

Copyright © 2012, Oracle and/or its affiliates. All rights reserved. 33

データソース

アプリケーションで接続待ちが発生しないことが理想的

– 接続待ちが発生しないように最大容量を設定する

実行スレッド数を目安に設定を開始、負荷状況によって最大容量を決定する

– 原則は初期容量=最大容量

初期容量と最大容量に差があると容量増加時に待ちが発生する可能性あり

容量の管理がキーポイント

Page 34: WebLogic Serverチューニングのポイント

Copyright © 2012, Oracle and/or its affiliates. All rights reserved. 34

Tips: 最大容量と最大スレッド数制約

ワークマネージャの最大スレッド数制約ではデータソースの最大容量を指定することができる

データソースの最大容量を超える実行スレッドの生成を抑制するには?

データソース名を指定

データソースの最大容量が容量制約数になる

解消できる問題点: 自動チューニングスレッドプールで負荷に応じてスレッド数が増えてもデータソースの最大容量を超えてしまうと接続待ちによる処理の遅延が発生する

Page 35: WebLogic Serverチューニングのポイント

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

Page 36: WebLogic Serverチューニングのポイント

Copyright © 2012, Oracle and/or its affiliates. All rights reserved. 36

参考: モニタするMBean属性

MBean 属性

JDBCDataSourceRuntime CurrCapacity

ActiveConnectionsCurrentCount

WaitingForConnectionCurrentCount

ThreadPoolRuntime ExecuteThreadTotalCount

ExecuteThreadIdleCount

StandbyThreadCount

PendingUserRequestCounts

Page 37: WebLogic Serverチューニングのポイント

Copyright © 2012, Oracle and/or its affiliates. All rights reserved. 37

参考: モニタするMBean属性

MBean 属性

ServerRuntime OpenSocketsCurrentCount

WebAppComponentRuntime OpenSessionsCurrentCount

StatelessEJBRuntime PooledBeansCurrentCount

BeansInUseCurrentCount

WaiterCurrentCount

JVMRuntime HeapFreeCurrent

HeapSizeCurrent

Page 38: WebLogic Serverチューニングのポイント

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

Page 39: WebLogic Serverチューニングのポイント

Copyright © 2012, Oracle and/or its affiliates. All rights reserved. 39

まとめ

WebLogic Serverでは自動チューニング機能や過負荷保護機能などリソースを効率良く使用する機能があります

– デフォルト設定でもある程度の性能が得られますがWebLogic Serverのリクエスト処理を把握して設定を行えばより効率的な処理を実行できます

– WebLogic Serverだけでなくアプリケーション実装のチューニングも実施してください

チューニングは総合力。 WebLogic Serverの基礎をしっかり固めてステップアップしましょう

Page 40: WebLogic Serverチューニングのポイント

Copyright © 2012, Oracle and/or its affiliates. All rights reserved. 40

Oracle Universityからのお知らせ

WebLogic Serverの管理方法を体系的に学習したい方に最適な研修コースをご提供しています。

– Classroomトレーニングだけでなく、Live Virtual Classや『Oracle トレーニング・オンデマンド』など多様な受講形態から選択いただけます。

40

Page 41: WebLogic Serverチューニングのポイント

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(金) トレーニングキャンパス大阪

Page 42: WebLogic Serverチューニングのポイント

Copyright © 2012, Oracle and/or its affiliates. All rights reserved. 42

WebLogic Server勉強会 参加者の皆さまの特典 http://education.oracle.co.jp/campaign_wlstudy/

Page 43: WebLogic Serverチューニングのポイント

Copyright © 2012, Oracle and/or its affiliates. All rights reserved. 43

Page 44: WebLogic Serverチューニングのポイント

Copyright © 2012, Oracle and/or its affiliates. All rights reserved. 44