Your SlideShare is downloading. ×
0
<Insert Picture Here>




WebLogic Server のアーキテクチャ(スレッド管理)

日本オラクル株式会社 カスタマーサービス統括本部
テクニカルアナリスト 大類 和久
2009年 4月14日
以下の事項は、弊社の一般的な製品の方向性に関する概要を説明するものです。ま
た、情報提供を唯一の目的とするものであり、いかなる契約にも組み込むことはでき
ません。以下の事項は、マテリアルやコード、機能を提供することをコミットメント(確約
)する...
Agenda

•   アプリケーションサーバにおけるスレッド管理の必要性
•   WebLogic Server 10.3 のスレッド管理のアーキテクチャ
•   コンフィグレーション
•   TIPS




               ...
アプリケーションサーバにおけるスレッド管理の必要性

• 多数のクライアントからのリクエストを処理する必要がある
• 多重、同時でリクエストを処理する必要がある
• マルチスレッドで複数のリクエストを処理するのが最適


クライアント    ア...
アプリケーションサーバにおけるスレッド管理の必要性

 • WebLgoic Server 8.1 以前のアーキテクチャ
                                                             ...
WebLogic Server 10.3 のスレッド管理のアーキテクチャ
- 新たなアーキテクチャの必要性
• WebLgoic Server 8.1 以前のアーキテクチャの課題
 • スレッド数の調整が難しい
   • アプリケーションで必要...
WebLogic Server 10.3 のスレッド管理のアーキテクチャ
- 新たなアーキテクチャ
• 単一の自動チューニングスレッドプールの導入
 • 1 つのスレッドプールを複数のアプリケーションが利用する
 • スループットの測定に基づい...
WebLogic Server 10.3 のスレッド管理のアーキテクチャ
- 概要図
                           ワークマネージャサブシステム
クライアント                 Default ワークマネー...
WebLogic Server 10.3 のスレッド管理のアーキテクチャ
- スレッドの増減

                                 2秒間隔でスループットの監視
                          ...
WebLogic Server 10.3 のスレッド管理のアーキテクチャ
 - リクエストのプライオリティ付け


     リクエストのプライオリティで順序を変更

ワークマネージャ A
        A

             A B...
コンフィグレーション
- 種類
• 制約
 • 最小スレッド数制約
 • 最大スレッド数制約
 • 容量制約
• 要求クラス
 • フェアシェア要求クラス
 • 応答時間要求クラス
 • コンテキスト要求クラス




           C...
コンフィグレーション
- 最小スレッド数制約
• 最小スレッド数制約

   ワークマネージャ A


  MinThreadConstraint = 3                          スレッドプール

 • 最小の並列実行...
コンフィグレーション
- 最大スレッド数制約
• 最大スレッド数制約

    ワークマネージャ A
                        実行中
  MaxThreadConstraint = 3                  ...
コンフィグレーション
- 容量制約
• 容量制約

   ワークマネージャ A
                        実行中
     Capacity = 6                                スレッドプ...
コンフィグレーション
- 要求クラス
• 要求クラスとは?
 • リクエストの重みを決定するもの
 • 空きスレッドが無い状態での、スレッドの割り当て時に作用




          Copyright© 2009, Oracle. All...
コンフィグレーション
- 要求クラス
• フェアシェア要求クラス
 • 相対的なプライオリティを設定する
   • 例) 100
• 応答時間要求クラス
 • 目標とする応答時間を設定する
    • 例) 2000 msec
 • 待ちキュー...
コンフィグレーション
 - 要求クラス 例
• 例1
 • ワークマネージャ A (フェアシェア 100)
 • ワークマネージャ B (フェアシェア 200)
 • 高負荷でリクエストを投入
    • 1:2 の割合でスレッドが割り当てられ...
コンフィグレーション
 - 要求クラス 例
• 例3
 • フェアシェア要求クラスをネストしたコンテキスト要求クラス
    • ユーザ : system は 100 を設定したフェアシェア要求クラスを
      使用
    • 他のユーザ...
コンフィグレーション
- ワークマネージャの定義
• グローバルワークマネージャ
 • config.xml で定義
• アプリケーションスコープワークマネージャ
 • weblogic-application.xml (EAR)
 • web...
コンフィグレーション
 - ワークマネージャの使用法
• Web アプリケーション
  • Servlet 単位
     • web.xml
        <init-param>
            <param-name>wl-di...
TIPS
• 起動直後のパフォーマンスの立ち上がりが悪い
• Why?
  • 起動直後はスレッドプール内のスレッドは少ない
  • スレッドは、スループットの測定で必要と判断された際に初めて増加する

• 対応策
  • 基本的には、ワークマ...
TIPS
• 高負荷時に JDBC データソースの最大接続数を超えた取得が行われ
  てしまう
• Why?
  • 高負荷により自動チューニングでスレッド数が増えすぎている
  • 最大スレッド数制約によるスレッド数の制限が必要

• 対応策...
TIPS
• Web アプリケーションが突然 503(Service Unavailable) エラーを返す
  ようになった
• Why?
  • アプリケーションの処理でスレッドがスタックしている(BEA-000337 とい
    う I...
参考資料

• ワーク マネージャを使用したスケジューリング済み作業の最適化
  • http://otndnld.oracle.co.jp/document/products/wls/docs103/config_wls
    /self_...
<Insert Picture Here>
Copyright© 2009, Oracle. All rights reserved.   26
Upcoming SlideShare
Loading in...5
×

WebLogic Server のアーキテクチャ(スレッド管理)

23,302

Published on

第一回 WebLogic Server 勉強会資料

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

No Downloads
Views
Total Views
23,302
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
328
Comments
0
Likes
6
Embeds 0
No embeds

No notes for slide

Transcript of "WebLogic Server のアーキテクチャ(スレッド管理)"

  1. 1. <Insert Picture Here> WebLogic Server のアーキテクチャ(スレッド管理) 日本オラクル株式会社 カスタマーサービス統括本部 テクニカルアナリスト 大類 和久 2009年 4月14日
  2. 2. 以下の事項は、弊社の一般的な製品の方向性に関する概要を説明するものです。ま た、情報提供を唯一の目的とするものであり、いかなる契約にも組み込むことはでき ません。以下の事項は、マテリアルやコード、機能を提供することをコミットメント(確約 )するものではないため、購買決定を行う際の判断材料になさらないで下さい。オラ クル製品に関して記載されている機能の開発、リリースおよび時期については、弊社 の裁量により決定されます。 Oracle、PeopleSoft、JD Edwards、及びSiebelは、米国オラクル・コーポレーション及びその子会社、関連会社の登録商 標です。その他の名称はそれぞれの会社の商標の可能性があります。 Copyright© 2009, Oracle. All rights reserved. 2
  3. 3. Agenda • アプリケーションサーバにおけるスレッド管理の必要性 • WebLogic Server 10.3 のスレッド管理のアーキテクチャ • コンフィグレーション • TIPS Copyright© 2009, Oracle. All rights reserved. 3
  4. 4. アプリケーションサーバにおけるスレッド管理の必要性 • 多数のクライアントからのリクエストを処理する必要がある • 多重、同時でリクエストを処理する必要がある • マルチスレッドで複数のリクエストを処理するのが最適 クライアント アプリケーションサーバ スレッド キュー ・ ・ ・ Copyright© 2009, Oracle. All rights reserved. 4
  5. 5. アプリケーションサーバにおけるスレッド管理の必要性 • WebLgoic Server 8.1 以前のアーキテクチャ アプリケーション クライアント スレッドプール WebApp A 実行キュー EJB A WebApp B ソケットリーダー Copyright© 2009, Oracle. All rights reserved. 5
  6. 6. WebLogic Server 10.3 のスレッド管理のアーキテクチャ - 新たなアーキテクチャの必要性 • WebLgoic Server 8.1 以前のアーキテクチャの課題 • スレッド数の調整が難しい • アプリケーションで必要なスレッド数を正確に決定するのは困難 • 多くし過ぎるとスレッド作成で起動が遅くなり、少ないと高負荷時の同時実行性 が下がるというジレンマ • スレッドは高価なリソースのため、少ないスレッドを効率的に使用したい • アプリケーション毎のプライオリティ付けが困難 • スレッドプール毎にスレッドのプライオリティを設定可能だが、OS レベルの設定 のため大袈裟 • 新たなアーキテクチャが必要 Copyright© 2009, Oracle. All rights reserved. 6
  7. 7. WebLogic Server 10.3 のスレッド管理のアーキテクチャ - 新たなアーキテクチャ • 単一の自動チューニングスレッドプールの導入 • 1 つのスレッドプールを複数のアプリケーションが利用する • スループットの測定に基づいて、自動でスレッド数が調整される • 初期のスレッド数は少ないため、起動時間に影響を及ぼさない • ワークマネージャの導入 • アプリケーション毎、ユーザ毎等の細かいプライオリティ付けが可能 • このアーキテクチャは WebLogic Server 9.0 から導入 Copyright© 2009, Oracle. All rights reserved. 7
  8. 8. WebLogic Server 10.3 のスレッド管理のアーキテクチャ - 概要図 ワークマネージャサブシステム クライアント Default ワークマネージャ WebApp A ワークマネージャ A WebApp B ワークマネージャ B EJB A ワークマネージャ C コンソール ソケットリーダー スレッドプール Copyright© 2009, Oracle. All rights reserved. 8
  9. 9. WebLogic Server 10.3 のスレッド管理のアーキテクチャ - スレッドの増減 2秒間隔でスループットの監視 スレッドが必要 スレッドが不要 ワークマネージャ A ワークマネージャ B スレッドプール Active Thread Standby Thread Copyright© 2009, Oracle. All rights reserved. 9
  10. 10. WebLogic Server 10.3 のスレッド管理のアーキテクチャ - リクエストのプライオリティ付け リクエストのプライオリティで順序を変更 ワークマネージャ A A A B ワークマネージャ B B スレッドプール Copyright© 2009, Oracle. All rights reserved. 10
  11. 11. コンフィグレーション - 種類 • 制約 • 最小スレッド数制約 • 最大スレッド数制約 • 容量制約 • 要求クラス • フェアシェア要求クラス • 応答時間要求クラス • コンテキスト要求クラス Copyright© 2009, Oracle. All rights reserved. 11
  12. 12. コンフィグレーション - 最小スレッド数制約 • 最小スレッド数制約 ワークマネージャ A MinThreadConstraint = 3 スレッドプール • 最小の並列実行数を制御 • プールにスレッドが存在するかに関わらず、スレッドを作成してでも 実行 • 起動時に作成されるスレッド数とは関係しない • 主な目的はデッドロックの防止 Copyright© 2009, Oracle. All rights reserved. 12
  13. 13. コンフィグレーション - 最大スレッド数制約 • 最大スレッド数制約 ワークマネージャ A 実行中 MaxThreadConstraint = 3 スレッドプール • 最大の並列実行数を制御 • 複数のワークマネージャより共有することが可能 • 合計のスレッド総数が制約の対象となる Copyright© 2009, Oracle. All rights reserved. 13
  14. 14. コンフィグレーション - 容量制約 • 容量制約 ワークマネージャ A 実行中 Capacity = 6 スレッドプール • キューに溜まるリクエストと実行中のリクエストの総数の最大数 • オーバーロードの防止 Copyright© 2009, Oracle. All rights reserved. 14
  15. 15. コンフィグレーション - 要求クラス • 要求クラスとは? • リクエストの重みを決定するもの • 空きスレッドが無い状態での、スレッドの割り当て時に作用 Copyright© 2009, Oracle. All rights reserved. 15
  16. 16. コンフィグレーション - 要求クラス • フェアシェア要求クラス • 相対的なプライオリティを設定する • 例) 100 • 応答時間要求クラス • 目標とする応答時間を設定する • 例) 2000 msec • 待ちキューに滞留する時間をコントロール • あくまで目標値の設定 • コンテキスト要求クラス • ユーザ毎に要求クラスを決定する • 要求クラスのネストを作成 Copyright© 2009, Oracle. All rights reserved. 16
  17. 17. コンフィグレーション - 要求クラス 例 • 例1 • ワークマネージャ A (フェアシェア 100) • ワークマネージャ B (フェアシェア 200) • 高負荷でリクエストを投入 • 1:2 の割合でスレッドが割り当てられる • 例2 • ワークマネージャ C (応答時間 2000ms) • ワークマネージャ D (応答時間 1000ms) • 高負荷でリクエストを投入し、アプリケーション実行時間が一定と仮 定する • 1:2 の割合でスレッドが割り当てられる Copyright© 2009, Oracle. All rights reserved. 17
  18. 18. コンフィグレーション - 要求クラス 例 • 例3 • フェアシェア要求クラスをネストしたコンテキスト要求クラス • ユーザ : system は 100 を設定したフェアシェア要求クラスを 使用 • 他のユーザ : everyone は 50 を設定したフェアシェア要求クラ スを使用 • ユーザ : system のリクエストは他のユーザより高い優先度でス レッドが割り当てられる Copyright© 2009, Oracle. All rights reserved. 18
  19. 19. コンフィグレーション - ワークマネージャの定義 • グローバルワークマネージャ • config.xml で定義 • アプリケーションスコープワークマネージャ • weblogic-application.xml (EAR) • weblogic-ejb-jar.xml (EJB) <work-manager> • weblogic.xml (WAR) <name>WM01</name> で定義 <fair-share-request-class> <name>share20</name> <fair-share>20</fair-share> </fair-share-request-class> </work-manager> Copyright© 2009, Oracle. All rights reserved. 19
  20. 20. コンフィグレーション - ワークマネージャの使用法 • Web アプリケーション • Servlet 単位 • web.xml <init-param> <param-name>wl-dispatch-policy</param-name> <param-value>WM01</param-value> </init-param> • Web アプリケーション単位 • weblogic.xml <wl-dispatch-policy>WM01</wl-dispatch-policy> • EJB • weblogic-ejb-jar.xml <dispatch-policy>WM01</dispatch-policy> Copyright© 2009, Oracle. All rights reserved. 20
  21. 21. TIPS • 起動直後のパフォーマンスの立ち上がりが悪い • Why? • 起動直後はスレッドプール内のスレッドは少ない • スレッドは、スループットの測定で必要と判断された際に初めて増加する • 対応策 • 基本的には、ワークマネージャの設定による自動チューニングを推奨 • 起動直後にピークアクセスが発生することが分かっている場合に限り、内 部オプションでスレッドプール内のスレッド数を調整することも有効 • config.xml <server> <name>AdminServer</name> <self-tuning-thread-pool-size-min>30</self-tuning-thread-pool-size-min> <listen-port>7001</listen-port> <listen-address>XXX.XXX.XXX.XXX</listen-address> </server> • 起動オプション -Dweblogic.SelfTuningThreadPoolSizeMin=30 Copyright© 2009, Oracle. All rights reserved. 21
  22. 22. TIPS • 高負荷時に JDBC データソースの最大接続数を超えた取得が行われ てしまう • Why? • 高負荷により自動チューニングでスレッド数が増えすぎている • 最大スレッド数制約によるスレッド数の制限が必要 • 対応策 • 最大スレッド数制約にデータソース名を設定することが可能 • config.xml <max-threads-constraint> <name>MaxThreadsConstraint-0</name> <target>AdminServer</target> <count>-1</count> <connection-pool-name>AppDataSource</connection-pool-name> </max-threads-constraint> • データソースの最大接続数でスレッド数が制限される Copyright© 2009, Oracle. All rights reserved. 22
  23. 23. TIPS • Web アプリケーションが突然 503(Service Unavailable) エラーを返す ようになった • Why? • アプリケーションの処理でスレッドがスタックしている(BEA-000337 とい う ID のメッセージで確認可能) • 過負荷防止のメカニズムにより、スレッドのスタックが検出されると、ワーク マネージャがシャットダウンされる • シャットダウンしたワークマネージャへのリクエストは 503 エラーで返る • 対応策 • スレッドがスタックする原因を取り除く • ワークマネージャでスレッドのスタックを無視するように設定 • ワークマネージャでスタックを検出する時間、スレッドの数を設定 • config.xml <work-manager> <name>stuckthread_workmanager</name> <work-manager-shutdown-trigger> <max-stuck-thread-time>1200</max-stuck-thread-time> <stuck-thread-count>2</stuck-thread-count> </work-manager-shutdown-trigger> </work-manager> Copyright© 2009, Oracle. All rights reserved. 23
  24. 24. 参考資料 • ワーク マネージャを使用したスケジューリング済み作業の最適化 • http://otndnld.oracle.co.jp/document/products/wls/docs103/config_wls /self_tuned.html • WebLogic Server 9.0におけるワークロード(作業負荷)管理 • http://www.oracle.com/technology/global/jp/pub/articles/dev2arch/2 006/01/workload-management.html • トラブルシューティング ガイド サポート診断パターン - 一般的なサーバ ハング • http://support.oracle.co.jp/bea/support_patterns- ja/Generic_Server_Hang_Pattern.html Copyright© 2009, Oracle. All rights reserved. 24
  25. 25. <Insert Picture Here>
  26. 26. Copyright© 2009, Oracle. All rights reserved. 26
  1. A particular slide catching your eye?

    Clipping is a handy way to collect important slides you want to go back to later.

×