43
<Insert Picture Here> WebLogic Server の TIPS 最近の事例から - CASE STUDY 日本オラクル(株) カスタマーサービス統括本部 テクニカルアナリスト 石塚 崇浩 2009年5月21日

WebLogic Server の TIPS 最近の事例から - CASE STUDY

Embed Size (px)

DESCRIPTION

第二回 WebLogic Server 勉強会資料

Citation preview

Page 1: WebLogic Server の TIPS 最近の事例から - CASE STUDY

<Insert Picture Here>

WebLogic Server の TIPS最近の事例から - CASE STUDY

日本オラクル(株) カスタマーサービス統括本部テクニカルアナリスト 石塚 崇浩2009年5月21日

Page 2: WebLogic Server の TIPS 最近の事例から - CASE STUDY

Copyright© 2009, Oracle. All rights reserved. 2

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

Oracle、PeopleSoft、JD Edwards、及びSiebelは、米国オラクル・コーポレーション及びその子会社、関連会社の登録商標です。その他の名称はそれぞれの会社の商標の可能性があります。

Page 3: WebLogic Server の TIPS 最近の事例から - CASE STUDY

Copyright© 2009, Oracle. All rights reserved. 3

• WebLogic Server の事例• クラスタ環境 - サーバ再起動時の注意点

• Linux 環境固有 - メモリリーク既知問題

• JDBC 関連の事例• 「非アクティブ接続タイムアウト」の活用法

• Oracle RAC と組み合わせる際のポイント

• 高速接続フェイルオーバ利用時のポイント

• JRockit の事例• JRockit でのエンコード指定について

• トラブルシューティング関連 お役立ち情報

Agenda

Page 4: WebLogic Server の TIPS 最近の事例から - CASE STUDY

Copyright© 2009, Oracle. All rights reserved. 4

• WebLogic Server の事例• クラスタ環境 - サーバ再起動時の注意点

• Linux 環境固有 - メモリリーク既知問題

• JDBC 関連の事例• 「非アクティブ接続タイムアウト」の活用法

• Oracle RAC と組み合わせる際のポイント

• 高速接続フェイルオーバ利用時のポイント

• JRockit の事例• JRockit でのエンコード指定について

• トラブルシューティング関連 お役立ち情報

Agenda

Page 5: WebLogic Server の TIPS 最近の事例から - CASE STUDY

Copyright© 2009, Oracle. All rights reserved. 5

クラスタ環境 - サーバ再起動時の注意点

• 質問• 「インメモリレプリケーション」 を使用しているクラスタ環境で、メンテンスの為、各サーバの順次再起動が必要です。サーバー再起動の間隔は 「できるだけ短時間」 としたいのですが、 「アプリケーションは中断させたくありません」 。どのように行えばよいでしょうか?

• 回答• 最長の「セッションタイムアウト時間」を間隔として、順次再起動して下さい。

Page 6: WebLogic Server の TIPS 最近の事例から - CASE STUDY

Copyright© 2009, Oracle. All rights reserved. 6

インメモリレプリケーションの特徴

serverB

HttpSession

クラスタ

• クライアントからのアクセス時• HttpSessionオブジェクトを2つのサーバー上に生成

クライアント

serverA

HttpSession

Page 7: WebLogic Server の TIPS 最近の事例から - CASE STUDY

Copyright© 2009, Oracle. All rights reserved. 7

サーバー再起動後の状態

serverB

HttpSession

クラスタ

• serverA を再起動すると、残るオブジェクトは1つ・・

• このままでは、serverB の再起動はできない

クライアント アプリケーションを中断したくない!!

serverA

早く再起動したい

再起動

Page 8: WebLogic Server の TIPS 最近の事例から - CASE STUDY

Copyright© 2009, Oracle. All rights reserved. 8

アプリケーションを中断しない為には?

serverB

HttpSession

クラスタ

• serverAへのレプリケーションが必要• クライアントからのアクセスが必要

• いつアクセスされるかは予測不能

• セッションが失効した後は待つ必要はない

クライアント

serverA

HttpSession タイムアウト

コピー

Page 9: WebLogic Server の TIPS 最近の事例から - CASE STUDY

Copyright© 2009, Oracle. All rights reserved. 9

どのくらい待てばよいのか?

serverBクラスタ

• 一番最後に失効するオブジェクトを待てばよい• 最も遅いアクセスは? → serverA再起動の直前

• これにタイムアウト時間を加えた時刻が最後の失効

• 「serverA再起動」 + 「タイムアウト時間」で再起動可能

serverA

タイムアウト

クライアント

Page 10: WebLogic Server の TIPS 最近の事例から - CASE STUDY

Copyright© 2009, Oracle. All rights reserved. 10

まとめ

• 「インメモリレプリケーション」 の場合• 再起動の間隔は、「最長セッションタイムアウト」の時間を確保

• 「JDBC」 の場合• 再起動のタイミングは考慮しなくてよい

• セッション情報はメモリ以外の場所にある為

Page 11: WebLogic Server の TIPS 最近の事例から - CASE STUDY

Copyright© 2009, Oracle. All rights reserved. 11

Linux 環境固有 - メモリリーク既知問題

• 事象• Linux 環境の WebLogic Server 10.0 で OutOfMemoryError が発生しました。JRockit の診断コマンドで確認するとSocket 関連のオブジェクトが増加しており、GC 後も開放されていないようです。

• 回答• 既知問題「CR346335」 に該当するかもしれません。問題の切り分けと、修正パッチの適用をご検討下さい。

Page 12: WebLogic Server の TIPS 最近の事例から - CASE STUDY

Copyright© 2009, Oracle. All rights reserved. 12

発生条件と原因

• 発生条件• WebLogic Server のタイムアウト(CompleteMessageTimeout)などで、ソケットのI/O がキャンセルされると発生

• 原因• CR346335の既知問題

• Linux固有のマルチプレクサである「EpollSocketMuxer」のバグ

• マルチプレクサとは

• クライアントと WebLogic Server 間でソケット通信を効率よく行うための制御機能

Page 13: WebLogic Server の TIPS 最近の事例から - CASE STUDY

Copyright© 2009, Oracle. All rights reserved. 13

対処法1/2

• 1. パッチ適用、もしくはアップグレード

• 該当バージョン

• WebLogic Server 9.2 GA, MP1

• WebLogic Server 10.0 GA, MP1

• 修正済みバージョン

• WebLogic Server 9.2MP3, WebLogic Server 10.3

• WebLogic Server 9.2MP2 では発生しない

• 別の修正が加えられている為

Page 14: WebLogic Server の TIPS 最近の事例から - CASE STUDY

Copyright© 2009, Oracle. All rights reserved. 14

対処法2/2

• 2. マルチプレクサの切り替え

• Javaコマンド引数に以下を指定

• -Dweblogic.MuxerClass=weblogic.socket.PosixSocketMuxer

• 変更反映はスレッドダンプで確認可能

Page 15: WebLogic Server の TIPS 最近の事例から - CASE STUDY

Copyright© 2009, Oracle. All rights reserved. 15

1. EpollSocketMuxer を使用しているか?

• スレッドダンプの取得で確認可能

• kill -3 <pid>

切り分け方法1/2

"ExecuteThread: '0' for queue: 'weblogic.socket.Muxer'" id=24 idx=0x30tid=8375 prio=5 alive, in native, blocked, daemon

:

at weblogic/socket/EPollSocketMuxer.processSockets()

V(EPollSocket Muxer.java:153)

:

出力例

Page 16: WebLogic Server の TIPS 最近の事例から - CASE STUDY

Copyright© 2009, Oracle. All rights reserved. 16

2. JRockit診断コマンド

• 下記コマンドを定期的に取得

• jrcmd <pid> print_object_summary

--------- Detailed Heap Statistics: ---------:

0.9% 331k 14145 -4k java/util/ArrayList0.8% 294k 12556 +0k java/lang/ref/WeakReference0.7% 277k 3197 +0k [Ljava/util/Hashtable$Entry;0.7% 274k 11723 +0k javax/xml/namespace/QName0.7% 256k 1729 +8k weblogic/servlet/internal/ServletRequestImpl

0.7% 256k 1823 +7k weblogic/servlet/internal/MuxableSocketHTTP:

37487kB total ---

出力例

切り分け方法2/2

Page 17: WebLogic Server の TIPS 最近の事例から - CASE STUDY

Copyright© 2009, Oracle. All rights reserved. 17

まとめ

• Linux 環境の WebLogic Server にはバージョンによってCR346335の既知問題が内在

• 対処法はパッチの適用、もしくはアップグレード

• 他のマルチプレクサへの切り替えなどで切り分けが可能

• 他のプラットフォームでは発生しない

Page 18: WebLogic Server の TIPS 最近の事例から - CASE STUDY

Copyright© 2009, Oracle. All rights reserved. 18

• WebLogic Server の事例• クラスタ環境 - サーバ再起動時の注意点

• Linux 環境固有 - メモリリーク既知問題

• JDBC 関連の事例• 「非アクティブ接続タイムアウト」の活用法

• Oracle RAC と組み合わせる際のポイント

• 高速接続フェイルオーバ利用時のポイント

• JRockit の事例• JRockit でのエンコード指定について

• トラブルシューティング関連 お役立ち情報

Agenda

Page 19: WebLogic Server の TIPS 最近の事例から - CASE STUDY

Copyright© 2009, Oracle. All rights reserved. 19

「非アクティブ接続タイムアウト」の活用法

• 質問• JDBC データソースの 「現在アクティブな接続の数」が増えていき、最終的には 「接続の最大容量」 に達して接続できなくなります。接続のクローズ漏れを疑っていますが、アプリケーションのデバッグに活用できる WebLogicServer の機能はないでしょうか?

• 回答• 「非アクティブ接続タイムアウト」の機能をご活用ください。

Page 20: WebLogic Server の TIPS 最近の事例から - CASE STUDY

Copyright© 2009, Oracle. All rights reserved. 20

• 管理コンソールからの設定例• 動的な変更が可能

サービス>JDBC>データソース>コンフィグレーション>接続プール>詳

細>「非アクティブ接続タイムアウト」

設定箇所

Page 21: WebLogic Server の TIPS 最近の事例から - CASE STUDY

Copyright© 2009, Oracle. All rights reserved. 21

機能紹介

• 1. 接続を自動的にプールに戻す

• 一定時間 close されていない (プールに戻されていない)接続を自動的にプールに戻す機能

• 秒単位で指定• デフォルト値は「0」となっており無効

• 注意点• リークなのか本当に使用中なのかは考慮されない

Page 22: WebLogic Server の TIPS 最近の事例から - CASE STUDY

Copyright© 2009, Oracle. All rights reserved. 22

<2009/05/18 1時25分37秒 JST> <Warning> <JDBC> <BEA-001153> <Forcibly releasing inactive connection“weblogic.jdbc.wrapper.PoolConnection_oracle_jdbc_driver_T4CConnection@49” back into the connection pool “ds1”,currently reserved by: java.lang.Exception

at weblogic.jdbc.common.internal.ConnectionEnv.setup(ConnectionEnv.java:291)at weblogic.common.resourcepool.ResourcePoolImpl.reserveResource(ResourcePoolImpl.java:314)at weblogic.common.resourcepool.ResourcePoolImpl.reserveResource(ResourcePoolImpl.java:292)at weblogic.jdbc.common.internal.ConnectionPool.reserve(ConnectionPool.java:425)at weblogic.jdbc.common.internal.ConnectionPool.reserve(ConnectionPool.java:316)at weblogic.jdbc.common.internal.ConnectionPoolManager.reserve(ConnectionPoolManager.java:93)at weblogic.jdbc.common.internal.ConnectionPoolManager.reserve(ConnectionPoolManager.java:106)at weblogic.jdbc.pool.Driver.connect(Driver.java:149)at weblogic.jdbc.jts.Driver.getNonTxConnection(Driver.java:642)at weblogic.jdbc.jts.Driver.connect(Driver.java:124)at weblogic.jdbc.common.internal.RmiDataSource.getConnection(RmiDataSource.java:339)at test.caseStudy0521.dbaccess.getConnection(dbaccess.java:22)at test.caseStudy0521.dsLeakTest.doGet(dsLeakTest.java:16)at javax.servlet.http.HttpServlet.service(HttpServlet.java:707)

.>

• 2. プールに戻す際にスタックトレースを出力• アプリケーションの問題箇所の特定に有効

機能紹介

at test.caseStudy0521.dbaccess.getConnection(dbaccess.java:22)at test.caseStudy0521.dsLeakTest.doGet(dsLeakTest.java:16)

Page 23: WebLogic Server の TIPS 最近の事例から - CASE STUDY

Copyright© 2009, Oracle. All rights reserved. 23

まとめ

• 「非アクティブ接続タイムアウト」は接続リークの解消に活用可能

• スタックトレース出力を活用して、アプリケーションを修正

Page 24: WebLogic Server の TIPS 最近の事例から - CASE STUDY

Copyright© 2009, Oracle. All rights reserved. 2424

Oracle RAC と組み合わせる際のポイント

• 質問• WebLogic Server と Oracle RAC を組み合わせる場合のポイントや注意点を教えてください。

• 回答• マルチデータソースを通して利用します。

• 詳しい内容はマニュアルを参照、、、

「WebLogic Server での Oracle RAC の使い方」http://otndnld.oracle.co.jp/document/products/wls/docs103/jdbc_admin/oracle_rac.html

• ですが、ここでポイントを抜粋して説明します!!

Page 25: WebLogic Server の TIPS 最近の事例から - CASE STUDY

Copyright© 2009, Oracle. All rights reserved. 25

サポート対象となる構成- WebLoigc Server 10gR3 の場合

• Oracle Database• 10gR2 (10.2.0.1 および以降の 10.2.x 向けパッチセット)

• 11gR1 (11.1.0.6.0 および以降の 11.1.x 向けパッチセット)

• Oracle 11g Thin Driver• 最新のパッチバージョンを推奨

• Oracle OCI Driver, BEA WebLogic Type4 Driver 等は非サポート

• 最新情報はこちらで確認(バージョンによって異なります)http://e-docs.bea.com/platform/suppconfigs/configs103/103_over/supported_db.html

25

Page 26: WebLogic Server の TIPS 最近の事例から - CASE STUDY

Copyright© 2009, Oracle. All rights reserved. 26

• フェイルオーバー&ロードバランスをマルチデータソースが提供

• XA/非 XA どちらでも利用可能

基本構成は「マルチデータソース」

26

RACNode1

RACNode2

マルチデータソース

WebLogic Server

アプリケーション

フェイル

オーバー

&

ロード

バランス

DataSource 1

DataSource 2

Page 27: WebLogic Server の TIPS 最近の事例から - CASE STUDY

Copyright© 2009, Oracle. All rights reserved. 27

各データソースの必須設定 - 抜粋

• 「予約時に接続をテスト」を有効化• TestConnectionsOnReserve = "true“

• TestTableName = “テスト用 SQL”

• RAC ノード が使用可能かのテストに必須

• XA ドライバの場合は下記も必要• 「トランザクション完了までXA接続を保持」

• KeepXAConnTillTxComplete = "true“

• 「XA 再試行期間」

• XARetryDurationSeconds > 300秒 + トランザクションタイムアウト

• JDBC ドライバの FAILOVER, LOAD_BALANCE は off に設定

• 全てのデータソースで同じ設定を実施

27

Page 28: WebLogic Server の TIPS 最近の事例から - CASE STUDY

Copyright© 2009, Oracle. All rights reserved. 28

「マルチデータソース」以外の選択肢

• JDBC ドライバの「接続時フェイルオーバー」の活用• (FAILOVER = on) (LOAD_BALANCE = off)

• ドライバに閉じた機能であり WebLogic Server は関与しない

• XA(グローバルトランザクション) では利用不可

• Oracle 11g RAC の新機能「XA のロードバランス」は、WebLogic Server 10gR3 ではサポートされません。

• いかなる要件の場合も「マルチデータソース」が推奨構成

28

Page 29: WebLogic Server の TIPS 最近の事例から - CASE STUDY

Copyright© 2009, Oracle. All rights reserved. 29

まとめ

• サポート対象のデータベースとドライバは限定されている• Oracle RAC 10g/11g

• Oracle 11g Thin Driver

• 「マルチデータソース」が提供するフェイルオーバー、ロードバランスの利用を推奨

29

Page 30: WebLogic Server の TIPS 最近の事例から - CASE STUDY

Copyright© 2009, Oracle. All rights reserved. 30

高速接続フェイルオーバ利用時のポイント

• 質問• WebLogic Server 10.3で「高速接続フェイルオーバ」を利用したいと考えています。 WebLogic Server で必要となる設定と注意点がありましたら教えてください。

• 回答• データソースのプロパティ(後述)を設定することで WebLogic Serverでも FCF を活用できます。

• ここでは、ポイントを紹介させて頂きます。

Page 31: WebLogic Server の TIPS 最近の事例から - CASE STUDY

Copyright© 2009, Oracle. All rights reserved. 31

高速接続フェイルオーバとは?

• Fast Connection Failover ( FCF )

• Oracle Thin ドライバが提供する「 RAC イベント検知の仕組み」

• 「アプリケーションに依存しない」ので高速な障害検知が可能

Page 32: WebLogic Server の TIPS 最近の事例から - CASE STUDY

Copyright© 2009, Oracle. All rights reserved. 32

必要な設定

1. ドライバ クラス名を oracle.jdbc.pool.OracleDataSource に設定

• プール対応のデータソースを使用する

2. 「接続プール プロパティ」の追加• ONSConfiguration=nodes=hostname1:port1,hostname2:port2

• このプロパティの設定で他のプロパティも自動的に設定される

3. 「予約時に接続をテスト」にチェック• 管理コンソールから設定。RACノードが使用可能かのテストに必須

4. 「アイドルプール接続を信頼する秒数」の無効化• 管理コンソールから設定。デフォルトは10秒で有効な状態

• 0秒に設定し「無効」にする

Page 33: WebLogic Server の TIPS 最近の事例から - CASE STUDY

Copyright© 2009, Oracle. All rights reserved. 33

動作確認方法

• DBノードの切り替わり後の出力• 「SQLException, ORA-17008: クローズされた接続です」が

出力されることを確認できればOK

• 参考• Oracle Database JDBC開発者ガイドおよびリファレンス

10g リリース2(10.2) 27 高速接続フェイルオーバー

• アプリケーションによる認識http://otndnld.oracle.co.jp/document/products/oracle10g/102/doc_cd/java.102/B19275-03/fstconfo.htm#CEGIJDBE

Page 34: WebLogic Server の TIPS 最近の事例から - CASE STUDY

Copyright© 2009, Oracle. All rights reserved. 34

まとめ

• FCF は Oracle Thin ドライバの機能です

• WebLogic Server でもプロパティを渡すことで利用可能

• 現状、使用可能なバージョンは WebLogic Server 10.3のみ

• 参考

• 「KROWN:133779」• Oracle Technology Network(OTN) KROWN検索http://otn.oracle.co.jp/support/productfaq/index.html

Page 35: WebLogic Server の TIPS 最近の事例から - CASE STUDY

Copyright© 2009, Oracle. All rights reserved. 35

• WebLogic Server の事例• クラスタ環境 - サーバ再起動時の注意点

• Linux 環境固有 - メモリリーク既知問題

• JDBC 関連の事例• 「非アクティブ接続タイムアウト」の活用法

• Oracle RAC と組み合わせる際のポイント

• 高速接続フェイルオーバ利用時のポイント

• JRockit の事例• JRockit でのエンコード指定について

• トラブルシューティング関連 お役立ち情報

Agenda

Page 36: WebLogic Server の TIPS 最近の事例から - CASE STUDY

Copyright© 2009, Oracle. All rights reserved. 36

JRockit でのエンコード指定について

• 質問• R26.3.0 で使用可能であった「-Dfile.encoding」が R27.1 以降のJRockit で有効になりません。 これは製品の不具合でしょうか?

• 回答• いいえ、file.encoding は本来「 Read Only 」のプロパティです。OS のデフォルトエンコーディングの設定を利用してください。

Page 37: WebLogic Server の TIPS 最近の事例から - CASE STUDY

Copyright© 2009, Oracle. All rights reserved. 37

file.encoding は「 Read Only 」のプロパティ

• Sun Java にて 「Read Only」 との判断

• JRockit でも R27.1 以降で準拠(Read Only に変更)

• 参考• Sun Developer NetWork - Bug Database

• http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=4163515

• http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=4397522

Page 38: WebLogic Server の TIPS 最近の事例から - CASE STUDY

Copyright© 2009, Oracle. All rights reserved. 38

OS のデフォルトエンコーディング指定方法

• Windows の場合• [コントロール パネル|地域 (または地域のオプション)] から言語を選択

• UNIX の場合• LANG 環境変数を設定

• 参考• 「WebLogic Server コンテナのデフォルトのエンコーディングの指定方法」

• http://otndnld.oracle.co.jp/document/products/wls/docs103/ja/relnotes_ja.html#1110200

Page 39: WebLogic Server の TIPS 最近の事例から - CASE STUDY

Copyright© 2009, Oracle. All rights reserved. 39

まとめ

• エンコーディングの指定は、OSのデフォルトエンコーディングを使用する

• そもそも、デフォルト エンコーディングに頼らず、アプリケーション内で明示することが好ましい。(ポータビリティの確保)

Page 40: WebLogic Server の TIPS 最近の事例から - CASE STUDY

Copyright© 2009, Oracle. All rights reserved. 40

Q&A

Page 41: WebLogic Server の TIPS 最近の事例から - CASE STUDY

Copyright© 2009, Oracle. All rights reserved. 41

• WebLogic Server の事例• クラスタ環境 - サーバ再起動時の注意点

• Linux 環境固有 - メモリリーク既知問題

• JDBC 関連の事例• 「非アクティブ接続タイムアウト」の活用法

• Oracle RAC と組み合わせる際のポイント

• 高速接続フェイルオーバ利用時のポイント

• JRockit の事例• JRockit でのエンコード指定について

• トラブルシューティング関連 お役立ち情報

Agenda

Page 42: WebLogic Server の TIPS 最近の事例から - CASE STUDY

Copyright© 2009, Oracle. All rights reserved. 42

トラブルシューティング関連 お役立ち情報

• BEA サポートパターン• 典型的なトラブルのパターン別に、調査方法や対処方法をまとめたカタログ

• 現場でのトラブルシューティングに活用してください!

• http://support.oracle.co.jp/bea/support_patterns-ja/index.html

• 「BEA WebLogic 製品のトラブルシューティング手法」• WebLogic Trouble Shooting Methodology (TSM)

• Oracle University で提供する教育コース(2日間)

• 代表的な「サポートパターン」のトラブルシューティング手法を実習を通して習得

• http://education.oracle.com/

• 次回は 7/27 に開催

Page 43: WebLogic Server の TIPS 最近の事例から - CASE STUDY

Copyright© 2009, Oracle. All rights reserved. 43