傳訊引擎疑難排解要訣

請利用這一組特定提示來協助您進行服務整合傳訊引擎問題的疑難排解。

執行時期尚未起始設定,導致傳訊引擎啟動失敗

傳訊引擎無法啟動,WebSphere® Application Server 管理主控台顯示下列錯誤:

無法啟動 <name> 傳訊引擎,因為沒有針對它來起始設定
的執行時期,請在執行時期起始設定之後,再重試作業。
如果這個匯流排已啟用動態配置重新載入,就必須重新
啟動伺服器。

在嘗試重新啟動傳訊引擎之前,請確定您已重新啟動伺服器。 執行時期要順利起始設定,必須啟動應用程式伺服器。

如果要知道是不是啟動問題造成傳訊引擎執行時期無法起始設定,請檢查代管伺服器 SystemOut.log 中的錯誤訊息。
註: 這個主題參照一或多個應用程式伺服器日誌檔。 此外,在分散式和 IBM® i 系統上,另外也建議您可以配置伺服器來使用「高效能可延伸記載 (HPEL)」日誌和追蹤基礎架構,而不使用 SystemOut.logSystemErr.log, trace.logactivity.log 檔案。HPEL 與原生 z/OS® 記載機能也可以一起使用。如果您使用 HPEL,則可以從伺服器設定檔 bin 目錄,利用 LogViewer 指令行工具來存取您所有的日誌和追蹤資訊。請參閱有關利用 HPEL 疑難排解應用程式的資訊,以取得更多使用 HPEL 的相關資訊。
[z/OS]

使用 DB2 Universal JDBC 第 2 類驅動程式無法啟動傳訊引擎

試圖在 z/OS 平台上,利用 DB2® Universal JDBC 第 2 類驅動程式來儲存資料時,無法啟動傳訊引擎,在 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: 資料來源產生非預期的
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)
對於 z/OS 平台,您應該使用 DB2 Universal JDBC 第 4 類驅動程式。 如果您必須使用 DB2 Universal JDBC 第 2 類驅動程式,請完成下列步驟:
  1. 利用管理主控台來導覽至 資源 -> JDBC -> 資料來源 -> data_source_name -> [其他內容] 自訂內容
  2. 將 JDBC 驅動程式自訂內容 fullyMaterializeLobData 設為 false

    當提取某一列,或依照需要來分段擷取某一列時,fullyMaterializeLobData 自訂內容會判斷 LOB 是否在 JDBC 驅動程式中充分具體化。 實際行為取決於資料庫伺服器是否支援漸進式串流。 請參閱您的 DB2 文件,以取得這個內容的相關資訊。預設值為 true。

  3. 儲存對主要配置所做的變更。
  4. 重新啟動應用程式伺服器。

由於 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:
retire_web.000-RetireBus 傳訊引擎在「已停止」狀態中。

這是 Informix JDBC 驅動程式 3.00JC1 中的一項已知問題 (PTS 172471)。 如果要避免這個錯誤,請將 Informix JDBC 驅動程式升級至 3.00JC2。

資料儲存庫的問題判斷

您可以採用縮減的形式來建立傳訊引擎資料儲存庫中之資料的傾出。 輸出是給 IBM 服務人員使用。 請聯絡您的支援組織,以取得如何執行指令的相關資訊。
如果資料儲存庫中的資料有問題,很難從追蹤輸出來進行診斷。 不過,您可以採用 XML 格式來建立資料儲存庫中之資料的傾出。 在這個方式之下,會更容易診斷,因為它是可供人類閱讀的表示法,可以依照需要來轉換成其他格式。 您可以在 wsadmin 工具中輸入下列指令來建立資料儲存庫傾出:
  • 使用 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.
如果要解決這個問題,請執行下列動作:
  • 檢查資料庫問題,例如,資料庫無法使用。
  • 檢查網路問題。比方說,如果網路超載,兩部應用程式伺服器也許可以連接到資料庫,但有可能無法彼此連接,從而導致資源協調問題。
  • 如果您有提供高可用性或工作量分散功能的服務整合配置,請檢查是否已正確配置適當的資源。 比方說,檢查各傳訊引擎及其核心群組原則,以及使各個核心群組原則與傳訊引擎相關聯的比對準則。 請參閱配置服務整合的高可用性和工作量分散
[AIX Solaris HP-UX Linux Windows][IBM i]

當連接到 Network Attached Apache Derby 10.3 版資料庫時,發生不支援使用者 ID 的異常狀況

當測試 Network Attached Apache Derby 10.3 版資料庫的連線時,您會取得下列異常狀況:
java.lang.Exception: java.sql.SQLException: null userid not supported
DSRA0010E: SQL State = null, Error
[IBM i][AIX Solaris HP-UX Linux Windows]當您建立新的 Network Attached Apache Derby 資料儲存庫時,依預設,您會取得空白的鑑別別名。[IBM i][AIX Solaris HP-UX Linux Windows]如果您在「網路連接」模式中,搭配 DB2 Universal JDBC 驅動程式來使用 Apache Derby(也就是說,您用到「使用 (DB2) Universal JDBC 驅動程式之 Derby Network Server 的 JDBC 提供者」),您必須指定一個鑑別別名。Apache Derby 所需的資料來源設定下限 中有這項需求的說明文件。
註: [AIX Solaris HP-UX Linux Windows][IBM i]只有「使用 (DB2) Universal JDBC 驅動程式之 Derby Network Server 的 JDBC 提供者」才需要使用鑑別別名。建議您不要使用此驅動程式,而且將不需要鑑別別名的「使用 Derby Client 之 Derby Network Server 的 JDBC 提供者」取代。
另請參閱 配置傳訊引擎的 JDBC 資料來源

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

對於其他資料庫,您可以刪除資料儲存庫表格中所有列,也可以捨棄所有資料儲存庫表格。 這些表格在資料儲存庫所配置的綱目中。 如需表格的清單,請參閱資料儲存庫表格

如需相關資訊,請參閱資料儲存庫生命週期

與外部匯流排通訊的問題

如果要啟用匯流排之間的通訊,必須建立外部匯流排和服務匯流排整合鏈結。 在第一個匯流排上,外部匯流排的名稱必須符合為外部匯流排的第二個匯流排的名稱,這第二個匯流排的外部匯流排的名稱必須符合第一個匯流排的名稱。 在這兩個匯流排上,服務整合匯流排鏈結必須有相同的名稱。

如果您的配置不正確,例如,因為服務整合匯流排鏈結不符,您可能會遇到下列錯誤類型:

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。

    解決方案: 致力於在產生的訊息數目與消費的訊息數目之間取得平衡。
    提示: Object Request Broker (ORB) 執行緒儲存區的預設值是 100 個執行緒。 對於某些應用程式而言,這可能會讓 100 個應用程式將訊息傳送到相同的目的地。 請考慮將 ORB 執行緒儲存區調整為最多有 10 個執行緒。 這個較低的設定會減少生產者所能傳送的訊息數目,這有可能增加整體的通訊量。
  • 應用程式處理目的地的訊息太慢。
    解決方案: 可能需要增加用戶端應用程式消費的訊息數目。 當有多個消費者讀取一個目的地時,這個目的地會處理較多訊息。

    在非叢集環境中,請考慮在多部伺服器之間複製您的應用程式。 依預設,在叢集伺服器環境中,會複製應用程式。 如果要啟用非叢集環境中的訂閱者,請在 DurableSubscriptions 的 TopicConnectionFactory JNDI 設定中設定 cloned 旗標。

    限制: 這個解決方案不適合需要總體訊息排序的應用程式。
  • 訊息的服務品質屬性優於「最大努力非持續性」。
    解決方案: 請使用服務品質屬性是「最大努力非持續性」的訊息。 如果系統中有太多訊息,目的地會捨棄最大努力非持續性訊息。
    限制: 這個解決方案不適合必須接收所有訊息的應用程式。

系統重新啟動時的毀損問題

雖然不常見,但傳訊引擎、目的地或鏈結有可能在系統重新啟動之後毀損。 如果發生這個毀損情況,您會看到一則訊息指出這個問題。 如果是傳訊引擎有問題,傳訊引擎將無法啟動。 如果是目的地或鏈結毀損,相關的傳訊引擎會啟動,但在這個傳訊引擎上,目的地或鏈結將無法使用。

如果您不知道問題原因,在嘗試解決這個狀況之前,請聯絡 IBM 客戶服務代表來建立原因。

如果您知道問題原因,例如,您知道資料庫有問題,請完成下列步驟來加以解決:
  1. 利用管理主控台來導覽至 系統管理 -> 節點 然後按一下完整重新同步化,以確保系統的各配置檔已經同步。 執行這個作業,可能需要幾分鐘。
  2. 如果仍有問題,請完成下列其中一項作業:
    • 刪除毀損的物件,再加以重建。會失去毀損之前所產生或接收的訊息。
    • 從備份中還原您的系統,請參閱還原資料儲存庫及回復它的傳訊引擎。 建立備份之後所產生或接收的訊息會遺失。

在管理主控台中擷取傳訊引擎的狀態

如果要能夠擷取傳訊引擎的狀態,您至少必須用監視權限來登入管理主控台。 如果您沒有這個權限,即使傳訊引擎已啟動,傳訊引擎狀態也會顯示為「無法使用」。

如果未以擷取傳訊引擎狀態所需要的權限來登入,在伺服器 systemOut 日誌檔中,會記載類似下列中的錯誤訊息:
[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 方法應該在個別執行緒中執行這個測試和等待工作(使用標準 WorkManager 方法),以免延遲應用程式伺服器的啟動。

如需測試和等待傳訊引擎的程式碼範例,請參閱相依於傳訊引擎可用性的應用程式

[z/OS]

在伺服器啟動期間,出現通道架構訊息

當啟動伺服器時,您可能會看到,在控制區附屬項 (CRA) 程序中出現通道架構參考訊息。 這些訊息不代表發生了任何錯誤,您不需要採取任何動作。
  • 發出下列訊息是因為啟動了包含訊息驅動 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 Proxy 通道所採用的非同步啟動方式。
    CHFW0030E: Error starting chain {0} because of exception {1}

    當傳訊引擎啟動時,另一個參考訊息會加以確認,之後,就能夠處理訊息。

    只有在某些情況下,才會出現這些訊息,例如,您在移轉期間變更埠,就可能出現這些訊息。

  • 伺服器啟動期間,在控制區附屬項程序中,可能會重複顯示下列訊息,即使在後續重試時連線成功也一樣。 發出這個訊息是因為 z/OS TCP Proxy 通道所採用的非同步啟動方式,這不表示發生了任何錯誤。
    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
    這些訊息可能會類似下列範例,隨附「第一次失敗資料擷取 (FFDC)」輸出:
    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: 試圖啟動 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)
    原因:com.ibm.ws.tcpchannelproxy.jfap.NotYetInitializedException: 伺服器尚未起始設定
    				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
    最後應該會顯示下列訊息,指出已正確啟動 z/OS TCP Proxy 通道:
    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][IBM i][z/OS]

不支援包含 第 6 版 伺服器的混合版本的叢集進行傳訊引擎失效接手

WebSphere Application Server 7.0 版或更新版本伺服器所代管的傳訊引擎無法由 WebSphere Application Server 第 6 版伺服器所代管的傳訊引擎來進行失效接手。 如果您有叢集匯流排成員是混合了 第 6 版 與版本更新的伺服器而組成,您必須確定已配置高可用性原則來防止這類型的失效接手。

如果要防止 7.0 版或更新版本 傳訊引擎由 第 6 版 伺服器來進行失效接手,請配置傳訊引擎的高可用性原則,使叢集能夠有效區分成一組 第 6 版 伺服器及另一組 7.0 版或更新版本 伺服器,且會將 7.0 版或更新版本 傳訊引擎限制於 7.0 版或更新版本 的伺服器。 請參閱配置混合版叢集的傳訊引擎失效接手


指出主題類型的圖示 參照主題



時間戳記圖示 前次更新: last_date
http://www14.software.ibm.com/webapp/wsbroker/redirect?version=cord&product=was-nd-mp&topic=rjk_prob0
檔名:rjk_prob0.html