2002-07-10 (Wed) [長年日記]

帰宅すると

玄関前で三毛猫が待っててくれた!

BEA Developers Conference 2002

ここ二日ほど参加。すでに話題の中心は新技術、新機能よりも保守、運用、適用範囲の拡大、開発プロセスに向いているようだ。収穫をつらつらメモ。

JRockit

Intelプラットフォーム最強 JavaVM。いつでもJITがON(つまりインタプリタモードが無い)。JavaスレッドをOSネイティブスレッドにマップ可能。Hot-Spotは適宜検出して積極的に最適化リコンパイル。サーバサイド向けに最適化(メモリマネージ、スレッドマネージ、IOに比重が置かれる)。Windows と Linuxに対応。新 Core になった Intel の Xeon のハイパースレディングとの組み合わせが最強。

WebLogic Internals

WebLogicServerのスレッドアーキテクチャ。Listenスレッド(非SSL/SSL)がソケットを開いてコネクションを待ち、accept した接続を Socket リーダースレッドへ渡す。Socketリーダーは接続を適切な実行キューへと振り分ける。

Listenスレッド>Socketリーダスレッド>実行スレッド(実行キュー)
  • 実行キュー
    • 管理用RMIキュー … APがハングしても管理の続行を可能にするため専用キューが用意される。管理サーバ、管理対象サーバ間のインタラクション。JMXクライアント、weblogic.Admin
    • 管理コンソール用 HTTP キュー
    • レプリケーションキュー … クラスタ環境でのレプリカ。HTTPセッション、ステートフルセッションBean。
    • マルチキャストキュー … クラスタ環境でのマルチキャスト処理。ハートビート、クラスタワイドJNDI。
    • JMSディスパッチャキュー … JMSのフロントエンド、バックエンド処理
    • 非同期トランザクションキュー … トランザクションの実行を調整(XAプロトコル)。2フェーズコミット実行。
    • デフォルトキュー … すべてのユーザーリクエスト(T3,HTTP,RMI,IIOP,Web Services)。Socketリーダ。タイマージョブ(ユーザー定義はdeprecated)。
  • 内部スレッド
    • Listenスレッド
    • Application Pollerスレッド … 開発者モードのみで存在。開発中のアプリケーションファイルの更新を監視。開発者モードはこのスレッドのために負荷が高い。
    • Transaction Timeout スレッド … タイムアウトしたトランザクションを定期的にロールバック。
    • MultiCastソケットリーダスレッド … 分散環境で必要。マルチキャストデータを受信。
    • Socketリーダスレッド … Pure-Java 実装とネイティブ実装を選択できる。通常ネイティブ実装にするべき(WebLogicもネイティブなとこあるんだな)。
    • Timer High Priority スレッド … 高優先度のタイマジョブ実行、ハートビートとか
    • Timer Low Priority スレッド … 低優先度のタイマジョブを実行

スレッドダンブ

ハングの解析に有効

  • UNIX: kill -3(SIGQUIT)をプロセスに送る
  • Windows: CTRL-Break (NTサービスとして起動していると不可能)
  • 間隔を空けて複数回採取する
標準出力、標準エラー出力は予めリダイレクト
% ./startWebLogic.sh > console.log 2>&1

ユーザー定義の実行キュー

ミッションクリティカルなアプリケショーションに専用の実行キューを用意してスループットを向上させることができる。デットロック対策にもなる場合もある。欠点はIdelスレッドが増加することと、スレッドダンプが複雑化すること。

config.xmlにて<ExecuteQueue>でキューを作成。web.xmlでサーブレットに割り当てたり、ejbc で所定の EJB にユーザー定義実行キューを結びつけることができる。

スレッド関連トラブル

JDBCのDriverManager#getConnectionはデットロックの危険性あり。使用しない。JNDIからのDataSourceを推奨。

ヒープが十分あるのにOutOfMemoryErrorが発生

1.3.x以上の VM なら Permanent Generation不足の可能性あり。Permanent Generation とは GC されないオブジェクトに割り当てられるメモリ領域。サーバサイドシステムでは肥大化する傾向がある。

java weblogic.i18ntools.CatInfo

指定のIDのエラーメッセージを出力してくれる。日本語のエラー番号から英語のエラーメッセージを出力させて AskBEA などで検索できる。6.1でも使える。

本日のツッコミ(全1件) [ツッコミを入れる]
# 山本 (2004-04-04 (Sun) 02:03)

関連しそうなツールです。スレッドダンプの解析やヒープ容量/GCのチューニングにどうぞ。<br>http://yusuke.homeip.net/samurai/