メッセージング・エンジンのトラブルシューティングのヒント
ここにある一連の具体的ヒントを使うと、サービス統合メッセージング・エンジンに関する問題のトラブルシューティングに役立ちます。
- ランタイムがまだ初期化されていないため、メッセージング・エンジンの開始が失敗する
メッセージング・エンジンは DB2 Universal JDBC タイプ 2 ドライバーでは開始しません。
- Informix JDBC ドライバー 3.00JC1 の既知のエラーが原因でメッセージング・エンジンを開始できない
- データ・ストアの問題判別
- メッセージング・エンジンによって生じるデータベース競合メッセージ
Network Attached Apache Derby バージョン 10.3 データベースに接続する際、ユーザー ID 未サポートの例外が発生する
- XAResourceNotAvailableException 例外の考えられる原因と、それに対する適切な処置
- サービス統合バスを再作成する際の問題
- 外部バスとの通信における問題
- 名前を変更した外部バスとの通信を行う際の問題
- ラップされた SILimitExceeded 例外を伴う JMSException の考えられる原因
- システム再始動時の破損の問題
- 管理コンソールのメッセージング・エンジンの状況の取得
- 必要なメッセージング・エンジンを開始する前に、開始するアプリケーションを使用可能にする
サーバー始動時に表示されるチャネル・フレームワーク・メッセージ
バージョン 6 サーバーを含む混合 バージョンのクラスターでメッセージング・エンジン・フェイルオーバーはサポートされない
ランタイムがまだ初期化されていないため、メッセージング・エンジンの開始が失敗する
メッセージング・エンジンの開始が失敗し、WebSphere® Application Server 管理コンソールに以下のエラーが表示されます。
The messaging engine <name> cannot be started as there is no runtime
initialized for it yet, retry the operation once it has been initialized.
動的構成の再ロードがこのバスに対して使用可能になっている場合には、サーバーを再始動する必要があります。(If dynamic
configuration reload is enabled for this bus, then the servers must be
restarted.)
メッセージング・エンジンを再度開始する前に、サーバーを再始動したことを確認してください。ランタイムを正常に初期化するには、アプリケーション・サーバーが始動している必要があります。
![[z/OS]](../images/ngzos.gif)
メッセージング・エンジンは DB2 Universal JDBC タイプ 2 ドライバーでは開始しません。
DB2® Universal JDBC タイプ 2 ドライバーを使用して z/OS プラットフォーム上にデータを保管しようとしても、メッセージング・エンジンが開始せず、以下のメッセージに類似した「Storage Allocation Error」メッセージが WebSphere Application Server の SystemOut.log ファイルに出力される場合があります。
BBOO0220E: [SB6NLA1:SB6NLA1.server1-SB6NLA1] CWSIP0002E: An
internal messaging error occurred in com.ibm.ws.sib.processor.im
pl.MessageProcessor, 1:1469:1.365, com.ibm.ws.sib.msgstore.Messa
geStoreRuntimeException: com.ibm.ws.sib.msgstore.PersistenceExce
ption: CWSIS1501E: The data source has produced an unexpected
exception: com.ibm.db2.jcc.t2zos.y: [IBM/DB2][T2zos/2.5.48]T2zo
sPreparedStatement.readPrepareDescribeOutput_:processDescribeOut
put:1563:Storage Allocation Error at com.ibm.ws.sib.msgstore.cac
he.links.AbstractItemLink.readDataFromPersistence(AbstractItemLi
nk.java:2487) at
com.ibm.ws.sib.msgstore.cache.links.AbstractItemLink._restoreIte
m(AbstractItemLink.java:639)
- 管理コンソールを使用して 、とナビゲートします。
- JDBC ドライバーのカスタム・プロパティー fullyMaterializeLobData を false に設定します。
fullyMaterializeLobData カスタム・プロパティーは、行をフェッチするとき、または必要に応じて分割して取得するときに、LOB データを JDBC ドライバーで完全に実体化するかどうかを決定します。 実際の動作は、データベース・サーバーでのプログレッシブ・ストリーミングのサポートの有無によって異なります。このプロパティーについて詳しくは、DB2 資料を参照してください。デフォルト値は true です。
- 変更をマスター構成に保存します。
- アプリケーション・サーバーを再始動します。
Informix JDBC ドライバー 3.00JC1 の既知のエラーが原因でメッセージング・エンジンを開始できない
Informix® JDBC ドライバー 3.00JC1 を使用してデータを保管しようとしても、メッセージング・エンジンを開始できず、以下のエラー・メッセージが WebSphere Application Server の SystemOut.log ファイルに出力される場合があります。
00000022 SibMessage E [RetireBus:retire_web.000- RetireBus] CWSIS0002E:
The messaging engine encountered an exception while starting.
Exception: com.ibm.ws.sib.msgstore.PersistenceException: CWSIS1501E:
The data source has produced an unexpected exception: java.sql.BatchUpdateException:
Unique constraint (informix.u114_62) violated.
00000022 SibMessage E [RetireBus:retire_web.000- RetireBus] CWSID0035E:
Messaging engine retire_web.000-RetireBus cannot be started;
detected error reported during com.ibm.ws.sib.msgstore.impl.MessageStoreImpl start()
00000022 SibMessage E [RetireBus:retire_web.000- RetireBus] CWSID0027I:
Messaging engine retire_web.000-RetireBus cannot be restarted because a serious error has been reported.T]
00000022 SibMessage I [RetireBus:retire_web.000- RetireBus] CWSID0016I:
Messaging engine retire_web.000-RetireBus is in state Stopped.
Informix JDBC ドライバー 3.00JC1 には既知の問題 (PTS 172471) があります。このエラーを回避するためには、Informix JDBC ドライバーを 3.00JC2 にアップグレードしてください。
データ・ストアの問題判別
メッセージング・エンジン用のデータ・ストアのデータのダンプを、 誘導型の手法で作成することができます。この出力は、IBM サービス技術員が使用することを目 的としています。コマンドの実行方法については、お客様のサポート組織にお問い合わせください。- Jython の使用:
AdminControl.invoke(AdminControl.queryNames("type=SIBMessagingEngine, name=messagingenginename,*"), "dump", "com.ibm.ws.sib.msgstore.*")
- Jacl を使用:
$AdminControl invoke [$AdminControl queryNames type=SIBMessagingEngine, name=messagingenginename,*] dump com.ibm.ws.sib.msgstore.*
このダンプは 、$WAS_HOME/logs/server1 ディレクトリーに XML ファイルとして作成されます。このファイルの命名フォーマットは 、messaging_engine_nameUUIDtimestamp.xml です。
<MessageStore>
<itemStreams>
<ItemStreamLink id="0" state="Available">
<class>com.ibm.ws.sib.msgstore.ItemStream</class>
<priority>5</priority>
<canExpireSilently></canExpireSilently>
<storageStrategy>STORE_NEVER</storageStrategy>
<expiryTime>0</expiryTime>
<sequence>0</sequence>
<tranID>null</tranID>
<tickValue>0</tickValue>
<items>
<ItemLink id="2" state="Available" refCount="3" refCountDecreasing="false">
<class>com.ibm.ws.sib.msgstore.Item</class>
<priority>5</priority>
<canExpireSilently></canExpireSilently>
<storageStrategy>STORE_NEVER</storageStrategy>
<expiryTime>0</expiryTime>
<sequence>1</sequence>
<tranID>null</tranID>
<tickValue>0</tickValue>
</ItemLink></items></ItemStreamLink></itemStreams></MessageStore>
メッセージング・エンジンによって生じるデータベース競合メッセージ
CWSIS1546I: The messaging engine, ME_UUID={0}, INC_UUID={1}, has lost an existing lock or failed to gain an initial lock on the data store.
- データベースに関する問題 (例えば、データベースが使用不可など) をチェックします。
- ネットワークに関する問題をチェックします。例えば、ネットワークが過負荷となっている場合、2 つのアプリケーション・サーバーがデータベースに接続可能であったとしても、互いに接続することができないことがあり、リソース調整問題が発生することがあります。
- 高可用性またはワークロード共有を提供するサービス統合構成がある場合、適切なリソースが正しく構成されていることをチェックします。例えば、メッセージング・エンジン、それらメッセージング・エンジンに対するコア・グループ・ポリシー、および各コア・グループ・ポリシーをメッセージング・エンジンに関連付けるマッチング基準をチェックします。サービス統合の高可用性とワークロードの共有を構成するを参照してください。
![[AIX Solaris HP-UX Linux Windows]](../images/dist.gif)
![[IBM i]](../images/iseries.gif)
Network Attached Apache Derby バージョン 10.3 データベースに接続する際、ユーザー ID 未サポートの例外が発生する
java.lang.Exception: java.sql.SQLException: ヌルのユーザー ID はサポートされていません DSRA0010E: SQL 状態 = ヌル、エラー
![[IBM i]](../images/iseries.gif)
![[AIX Solaris HP-UX Linux Windows]](../images/dist.gif)
![[IBM i]](../images/iseries.gif)
![[AIX Solaris HP-UX Linux Windows]](../images/dist.gif)
![[AIX Solaris HP-UX Linux Windows]](../images/dist.gif)
![[IBM i]](../images/iseries.gif)
XAResourceNotAvailableException 例外の考えられる原因と、それに対する適切な処置
メッセージング・エンジンをホスティングするノードに対し て deleteNode コマンドを使用すると、これらのメッセー ジング・エンジンは削除されます。addNode コマンドを 実行した後に新規メッセージング・エンジンを再作成すると、これらのエン ジンは異なる ID を持つため、トランザクションのリカバリー中は、古いメ ッセージング・エンジンに接続することはできません。 メッセージング・エンジンをホスティングする各サーバーの SystemOut.log ファイルに 、XAResourceNotAvailableException 例外を示すメッセージが記入されます。この問題を解 決するには、未確定トランザクションの解決で説明している手 順に従う必要があります。
また 、クラスター・バス・メンバー内のサーバーがフェイルオーバーされた 場合に、XAResourceNotAvailableException 例外をスローすることができます。 この場合は、トランザクションをリカバリーおよび解決するための介入は不要です。
サービス統合バスを再作成する際の問題
サービス統合バスを削除してから、同じ名前の新規バスを作成した場合、 メッセージング・エンジンが始動に失敗し、以下のようなメッセージが SystemOut.log に記入されます。[8/11/04 21:55:01:439 CDT] 0000000f SibMessage I
[LateBus:xyzsun15.server1-LateBus] isAlive: MessagingEngine suffered common mode error.
Correct error (see logs) and restart server.
[8/11/04 21:55:01:468 CDT] 0000000f SibMessage I
[LateBus:xyzsun15.server1-LateBus] isAlive: MessagingEngine will be stopped
because of common mode error.
No failover will occur.
[8/11/04 21:55:01:493 CDT] 0000000f SibMessage I
[LateBus:xyzsun15.server1-LateBus] Messaging Engine
xyzsun15.server1-LateBus not in state from which stop is valid: Starting
[8/11/04 21:55:01:513 CDT] 0000000f SibMessage I
[LateBus:xyzsun15.server1-LateBus] isAlive: MessagingEngine stopped because
of common mode error. Correct error (see logs) and restart server.
[8/11/04 21:57:01:431 CDT] 0000000e SibMessage I
[LateBus:xyzsun15.server1-LateBus] isAlive: MessagingEngine suffered
common mode error.
Correct error (see logs) and restart server.
メッセージング・エンジンが開始に失敗したのは、バスが削除された後も、メッセージング・エンジン用のデータベース・ディレクトリーが引き続き存在しており、このディレクトリーを手動で除去する必要があるためです。実在していないメッセージング・エンジン用の Apache Derby データベースを削除するには、profile_root/databases/com.ibm.ws.sib にあるデータベース・ディレクトリーを削除する必要があります。 ここで、profile_root は、プロファイル固有の情報が保管されているディレクトリーです。
データベース・ファイルを削除する前に、WebSphere Application Server を停止する必要があります。
他のデータベースの場合は、データ・ストアのテーブルからすべての行を削除することも、すべてのデータ・ストア・テーブルを除去することもできます。 これらのテーブルは、データ・ストア用に構成されたスキーマ内にあります。テーブルのリストについては、データ・ストア・テーブルを参照してください。
詳しくは、データ・ストアのライフサイクルを参照してください。
外部バスとの通信における問題
バス間の通信を使用可能にするには、外部バスとサービス・バスの統合リンクを作成する必要があります。 最初のバスにおいて、外部バスの名前と、外部バスとなる 2 番目のバスの名前が一致する必要があります。 また、この 2 番目のバスである外部バスの名前は、最初のバスの名前と一致する必要があります。 サービス統合バス・リンクは、両方のバスで同じ名前を持つ必要があります。
例えばサービス統合バス・リンクが一致しないなど、構成が正しくない場合、以下のタイプのエラーが発生する場合があります。
SibMessage E [TechBus:TechCluster.000-TechBus]
CWSIT0057E: The inter-bus connection BookstoreBus failed in the remote
messaging engine on host aixp401.rchland.ibm.com with reason:
CWSIT0067E: Inter-bus connection BookstoreBus in bus BookstoreBus
is not available.
名前を変更した外部バスとの通信を行う際の問題
サービス統合バス・リンクのプロパティーを構成するのに使用した管理コンソール・パネルでは、 リンクが参照する外部バスの名前を変更することもできます。ただし、いったん構成したあとは、外部バスの名前を変更してはなりません。 名前を変更すると、リンクに関する状態情報を既に保持しているメッセージング・エンジンは、外部バス名が以前の値にリセットされるまでは、リンクを使用できません。
ラップされた SILimitExceeded 例外を伴う JMSException の考えられる原因
宛先で保持するメッセージの数が制限のしきい値に達すると、 その宛先にメッセージを送信しようとした場合に、ラップされた SILimitExceeded 例外による JMSException を出して失敗します。宛先は、保持するメッセージの数が制限のしきい値を下回るまで、この例外を出して失敗し続けます。
使用可能なメッセージの数を正確に取得するには、 キューおよびトピック・スペースの宛先の平均メッセージ・カウント PMI 統計をモニターします。使用可能なメッセージの数が増えた場合は、システムのバランスを取るアクションが必要です。 宛先で使用可能なメッセージが消費されるまで、新しいメッセージを送信するプロデューサーを停止してください。
- 宛先の上限しきい値が、予想されるメッセージ数よりも低すぎる。宛先で一部のメッセージを処理できません。
上限しきい値のデフォルト値は
50000 です。解決方法: 宛先の上限しきい値を増やします。
- アプリケーションが作成するメッセージが、宛先で処理可能な量を超えている。
作成されるメッセージの数と消費されるメッセージの数が期間を通じて等しくするのが理想的なバランスです。 システムのバランスが取れずに、作成側のアプリケーションから宛先で消費可能な量を超えたメッセージが送られると、 作成側アプリケーションで JMSException が出ます。
解決方法: 作成されるメッセージと使用されるメッセージの数のバランスを取ります。ヒント: オブジェクト・リクエスト・ブローカー (ORB) スレッド・プールのデフォルト設定は 100 スレッドです。アプリケーションによっては、100 のアプリケーションが同じ宛先にメッセージを送信する場合があります。最大で 10 スレッドを使用するよう ORB スレッド・プールを調整してください。設定値を低くすることにより、 メッセージを送信できるプロデューサーの数が減り、メッセージのスループット全体が向上します。 - アプリケーションの宛先からのメッセージ処理に時間がかかりすぎる。解決方法: クライアント・アプリケーションで使用可能なメッセージの数を増やす必要があります。 複数のコンシューマーが宛先から読み取りをする場合、宛先で処理するメッセージの数が増えます。
非クラスター環境では、複数のサーバーにわたってアプリケーションのクローンを作成してください。 デフォルトでは、アプリケーションのクローン作成はクラスター・サーバー環境で行われます。 非クラスター環境でサブスクライバーを使用可能にするには、DurableSubscriptions の TopicConnectionFactory JNDI 設定に cloned フラグを設定します。
制約事項: この方法は、メッセージ全体の順序付けが必要なアプリケーションには適していません。 - メッセージのサービス品質属性が、ベスト・エフォート非パーシスタントより良い。解決方法: サービス品質属性がベスト・エフォート非パーシスタントであるメッセージを使用します。システムのメッセージが多すぎる場合は、宛先でベスト・エフォートの非パーシスタント・メッセージが破棄されます。制約事項: この方法は、すべてのメッセージを受信する必要があるアプリケーションには適していません。
システム再始動時の破損の問題
メッセージング・エンジンにおいてまれに、システムを再始動した後で宛先またはリンクが壊れることがあります。この破損が生じた場合、その問題を示すメッセージが表示されます。 この問題がメッセージング・エンジンにある場合、メッセージング・エンジンは開始しません。宛先またはリンクが破壊されると、関連するメッセージング・エンジンは開始しますが、そのメッセージング・エンジンで宛先またはリンクを使用することはできません。
問題の原因が不明な場合は、IBM サービス技術員に問い合わせて原因を判別してから、状況の解決を試みてください。
- 管理コンソールを使用して 、とナビゲートしてから「完全な再同期」をクリックして、システムで構成ファイルが確実に同期するようにします。この操作を実行するには、数分間かかります。
- それでも問題が解決しなければ、次のいずれかを行います。
- 破壊されたオブジェクトを削除して、再作成します。破壊される前に作成/受信されたメッセージは失われます。
- バックアップからシステムを復元します。 データ・ストアの復元とそのメッセージング・エンジンのリカバリーを参照してください。 バックアップ以降に作成/受信されたメッセージは失われます。
管理コンソールのメッセージング・エンジンの状況の取得
メッセージング・エンジンの状況を取得できるようにするためには、モニター権限以上の権限で管理コンソールにログインする必要があります。この権限がない場合、メッセージング・エンジンが開始していたとしても、メッセージング・エンジンの状況は「使用不可」と表示されます。
[4/20/05 10:49:57:083 CDT] 0000004b RoleBasedAuth A SECJ0305I: The role-based
authorization check failed for admin-authz operation SIBMessagingEngine:stateExtended.
The user UNAUTHENTICATED (unique ID: unauthenticated) was not granted any of the
following required roles: administrator, operator, configurator, monitor.
メッセージに示されるユーザー ID は、管理コンソールへのログインに使用されたユーザー ID です。必要なメッセージング・エンジンを開始する前に、開始するアプリケーションを使用可能にする
アプリケーションが使用可能なメッセージング・エンジンに依存する場合は、そのメッセージング・エンジンを、アプリケーションを実行する前に開始する必要があります。アプリケーション・サーバーがアプリケーションを自動的に開始するようにしたい場合は、 必要なメッセージング・エンジンが始動済みであるか検査し、必要であればメッセージング・エンジンを待つための アプリケーションを開発する必要があります。この手法を始動 Bean で使用する場合、 アプリケーション・サーバーの始動が遅れないようにするために、始動 Bean メソッドは、 (標準の作業マネージャー・メソッドを使用して) 別のスレッドで検査および待機を実行する必要があります。
メッセージング・エンジンの検査および待機のコード例については、メッセージング・エンジンの可用性に依存するアプリケーションを参照してください。
![[z/OS]](../images/ngzos.gif)
サーバー始動時に表示されるチャネル・フレームワーク・メッセージ
- 次のメッセージが発行されるのは、メッセージング・エンジンを開始する前にメッセージ駆動型 Bean を含むアプリケーションが開始したためです。
CWSIV0759W: During activation of a message-driven bean, no suitable active messaging engines were found in the local server on the bus {0}.
メッセージング・エンジンが開始すると、別の情報メッセージがこれを確認し、メッセージ処理が行われるようになります。
- 次のメッセージは、z/OS TCP プロキシー・チャネルが非同期方式で開始することが原因で発行されます。
CHFW0030E: Error starting chain {0} because of exception {1}
メッセージング・エンジンが開始すると、別の情報メッセージがこれを確認し、メッセージ処理が行われるようになります。
これらのメッセージは、例えばマイグレーション中にポートを変更した場合など、 特定の状況でのみ表示されます。
- 後続の再試行で接続が成功する場合でも、サーバー開始時に、制御領域従属プロセス中に以下のメッセージが数回表示される
ことがあります。このメッセージは、
z/OS TCP プロキシー・チャネル
が非同期に開始することが原因で発行され、エラーが発生したことを示しているのではありません。
Trace: 2009/06/17 08:24:41.434 01 t=9C6B58 c=UNK key=P8 (00000011) Description: Log Java Message Message: CHFW0030E: Error starting chain _InboundTCPProxyBridgeService because of exception com.ibm.wsspi.channel.framework.exception.RetryableChannelException: An exception was thrown when attempting to start the TCPProxyChannel com.ibm.ws.channel.framework.imp l.ChannelFrameworkImpl
これらのメッセージには、以下の例に似た First Failure Data Capture (FFDC) 出力が伴う場合があります。
最終的に、 z/OS TCP プロキシー・チャネル が正しく開始したことを示す以下のメッセージが表示されます。Exception = com.ibm.wsspi.channel.framework.exception.RetryableChannelException Source = com.ibm.ws.channel.framework.impl.ChannelFrameworkImpl.startChainInternal probeid = 2577 Stack Dump = com.ibm.wsspi.channel.framework.exception.RetryableChannelException: An exception was thrown when attempting to start the TCPProxyChannel at com.ibm.ws.tcpchannelproxy.jfap.impl.TCPProxyInboundChannel.start(TCPProxyInboundChannel.java:153) at com.ibm.ws.channel.framework.impl.ChannelFrameworkImpl.startChannelInChain(ChannelFrameworkImpl.java:1410) at com.ibm.ws.channel.framework.impl.ChannelFrameworkImpl.startChainInternal(ChannelFrameworkImpl.java:2863) at com.ibm.ws.channel.framework.impl.WSChannelFrameworkImpl.startChainInternal(WSChannelFrameworkImpl.java:960) at com.ibm.ws.channel.framework.impl.ChannelFrameworkImpl.startChainInternal(ChannelFrameworkImpl.java:2794) at com.ibm.ws.channel.framework.impl.ChannelFrameworkImpl.startChain(ChannelFrameworkImpl.java:2779) at com.ibm.ws.runtime.component.ChannelFrameworkServiceImpl.startChain(ChannelFrameworkServiceImpl.java:666) at com.ibm.ws.sib.jfapchannel.framework.impl.ChannelFrameworkReference$TCPProxyBridgeServiceInboundChainStartupRunnable.run(ChannelFrameworkReference.java:1641) at com.ibm.ws.util.ThreadPool$Worker.run(ThreadPool.java:1550) Caused by: com.ibm.ws.tcpchannelproxy.jfap.NotYetInitializedException: Server is not yet initialized at com.ibm.ws.tcpchannelproxy.jfap.TCPProxyBridgeServicesImpl.startListening(TCPProxyBridgeServicesImpl.java:558) at com.ibm.ws.tcpchannelproxy.jfap.impl.TCPProxyInboundChannel.start(TCPProxyInboundChannel.java:131) ... 8 more
Trace: 2009/06/17 08:24:51.449 01 t=9C6B58 c=UNK key=P8 (13007002) ThreadId: 00000003 FunctionName: com.ibm.ws.channel.framework.impl.WSChannelFrameworkImpl SourceId: com.ibm.ws.channel.framework.impl.WSChannelFrameworkImpl Category: AUDIT ExtendedMessage: BBOO0222I: CHFW0019I: The Transport Channel Service has started chain _InboundTCPProxyBridgeService.
![[AIX Solaris HP-UX Linux Windows]](../images/dist.gif)
![[IBM i]](../images/iseries.gif)
![[z/OS]](../images/ngzos.gif)
バージョン 6 サーバーを含む混合 バージョンのクラスターでメッセージング・エンジン・フェイルオーバーはサポートされない
WebSphere Application Server バージョン 7.0 以降 サーバー上でホストされているメッセージング・エンジンを WebSphere Application Server バージョン 6 サーバー上でホストされているメッセージング・エンジンにフェイルオーバーすることはできません。バージョン 6 とそれ以降のサーバーが混在して構成されるクラスター・バス・メンバーを保持している場合は、このようなフェイルオーバーが回避されるように高可用性ポリシーを構成する必要があります。
バージョン 7.0 以降 のメッセージング・エンジンから バージョン 6 サーバーへのフェイルオーバーを回避するには、クラスターが バージョン 6 用の 1 つのサーバー・セット、および バージョン 7.0 以降 用の別のサーバー・セットに事実上分割され、バージョン 7.0 以降 メッセージング・エンジンが バージョン 7.0 以降 のサーバーに限定されるように、メッセージング・エンジンの高可用性ポリシーを構成する必要があります。 混合バージョン・クラスター用のメッセージング・エンジン・フェイルオーバーの構成を参照してください。