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

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

description

「Oracle WebLogic Serverチューニングのポイント」 Oracle WebLogic Serverのチューニングの第一歩として、スレッド管理をはじめとしたOracle WebLogic Serverの設定とアプリケーションの設定について、基本的なアプローチと設定方法を紹介します。 日本オラクル オラクル・ユニバーシティ 岡田 大輔 

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

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

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

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

日本オラクル株式会社

オラクルユニバーシティ

岡田 大輔

2013年11月27日

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

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

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

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

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

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

Agenda

WebLogic Serverのチューニング

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

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

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

WebLogic Serverのチューニング

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

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

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

H/W

OS

JVM

WebLogic Server

アプリケーション

今回の対象

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

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

WebLogic Serverのチューニング

チューニングの目的:

主な設定項目

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

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

– などなど

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

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

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

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

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

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

リクエスト受信

接続バックログ: サーバが受け入れることができる接続要求数

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

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

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

接続バックログ

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

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

SocketMuxer

SocketMuxerは実装を選択可能

– Java Muxer

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

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

– Native Muxer(デフォルト)

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

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

Native Muxerを推奨

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

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

は有効化されている

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

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

共有容量

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

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

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

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

キューの長さの制限

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

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

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

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

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

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

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

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

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

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では管理コンソールで設定可能 ([サーバー]-[サーバー名]-[構成]-[チューニング])

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

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

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

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

ワークマネージャとは?

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

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

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

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

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

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

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

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

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

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

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

ワークマネージャ

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

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

要求クラスと制約

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

制約 1

制約 2

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

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

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

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

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

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

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

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

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

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

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

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

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

ワークマネージャ

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

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

要求クラス

単位はミリ秒

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

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

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

制約

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

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

ワークマネージャの構成

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

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

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

TIPS: WLS12.1.2では追加設定可能

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

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

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

Webアプリケーション

EJB

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

weblogic.xml

web.xml

weblgic-ejb-jar.xml

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

Servlet単位で指定

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

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

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

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

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

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

weblogic-application.xml

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

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

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

過負荷保護機能

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

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

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

HTTPセッション数の制限

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

スタック スレッドの処理

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

要設定。デフォルトでは何もしない

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

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

オーバーロードの設定

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

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

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

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

を管理モードに

OOME発生時のアクション

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

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

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

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

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

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

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

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

WebLogic Server EAR

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

データベース

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

SocketMuxer

WorkManager

Webコンテナ EJBコンテナ

(フリープール) データ

ソース

7001

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

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

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

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

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

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

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

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

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

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

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

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

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エラーを返すように設定

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

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

EJB

Stateless SessionBean

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

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

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

Stateful SessionBean

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

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

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

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

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

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

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

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

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

データソース

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

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

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

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

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

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

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

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

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

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

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

データソース名を指定

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

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

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

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

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

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

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

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

参考: モニタするMBean属性

MBean 属性

ServerRuntime OpenSocketsCurrentCount

WebAppComponentRuntime OpenSessionsCurrentCount

StatelessEJBRuntime PooledBeansCurrentCount

BeansInUseCurrentCount

WaiterCurrentCount

JVMRuntime HeapFreeCurrent

HeapSizeCurrent

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

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

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

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

まとめ

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

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

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

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

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

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

Oracle Universityからのお知らせ

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

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

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

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 トレーニング・オンデマンドで!

いまなら無償体験版を視聴可能です!

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

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

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

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

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

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

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

Copyright © 2013, Oracle and/or its affiliates. All rights reserved. 45