Sun Java System Message Queue 3.7 UR1 管理指南

用戶端無法建立連線

徵兆:

可能原因:

可能原因:用戶端應用程式未關閉連線,導致連線數目超過資源限制。

若要確認此問題的原因:列出代理程式的所有連線:

imqcmd list cxn

輸出會列出所有連線和建立每個連線的主機,從而瞭解哪些用戶端開啟了過多的連線。

若要解決此問題:重新寫入違例用戶端,以關閉不使用的連線。

可能原因:未執行代理程式或網路連結發生問題。

若要確認此問題的原因:

若要解決此問題:

可能原因:連線服務不在使用中或已暫停。

若要確認此問題的原因:檢查所有連線服務的狀態:

imqcmd list svc

如果連線服務狀態顯示為 unknownpaused,則用戶端無法使用該服務建立連線。

若要解決此問題:

可能原因:可用於所需連線數目的可用執行緒太少。

若要確認此問題的原因:檢查代理程式記錄中的以下項目:

WARNING [B3004]: No threads are available to process a new connection on service ... Closing the new connection.

並且使用下列其中一種格式,檢查連線服務上的連線數目,以及目前使用中的執行緒數目:

imqcmd query svc -n serviceName imqcmd metrics svc -n serviceName -m cxn

每個連線均需要 2 個執行緒:一個用於內送訊息,另一個用於外寄訊息 (請參閱執行緒池管理)。

若要解決此問題:

可能原因:Solaris 或 Linux 平台上要求用於連線數目的檔案描述元太少。

如需有關此問題的更多資訊,請參閱設定檔案描述元限制

若要確認此問題的原因:檢查代理程式記錄中是否有以下相似項目:

Too many open files

若要解決此問題:增加檔案描述元限制,如 ulimit 線上手冊所述。

可能原因:TCP 積存區會限制可同時新建連線請求的數目。

TCP 積存區會限制同時儲存在系統積存區內的連線請求數目 (imq.portmapper.backlog ),連接埠對映器會在超過此限制之後拒絕其他請求。(Windows 平台上有程序內定的積存區限制:Windows 個人版作業系統的數目限制為 5 個,Windows 伺服器版作業系統的數目為 200 個。)

因為不會經常出現同時有大量的連線請求,所以因儲存區限制的請求拒絕通常為短暫現象。

若要確認此問題的原因:檢查代理程式記錄。首先,檢查代理程式在拒絕其他連線的同時是否有接受某些連線。接著,檢查拒絕連線的說明訊息。如果找到這類訊息,可能不是 TCP 積存區的問題,因為代理程式不會記錄 TCP 積存區造成的拒絕連線。如果記錄中有成功的連線,但是未記錄任何拒絕連線,則可能是 TCP 積存區的問題。

若要解決此問題:

可能原因:作業系統限制同步運作中連線的數目。

Windows 作業系統授權會限制所支援的同步運作遠端連線的數目。

若要確認此問題的原因:檢查可用於連線的執行緒數目是否夠用 (使用 imqcmd query svc),並檢查 Windows 授權合約的條款。如果您是從本地用戶端建立連線,而不是從遠端用戶端,作業系統限制可能是造成此問題的原因。

若要解決此問題:

可能原因:使用者的認證或授權失敗。

認證可能因為下列任一原因而失敗:

若要確認此問題的原因:檢查代理程式記錄中是否有 Forbidden 錯誤訊息的項目。這表示有驗證錯誤,但不表示為問題發生的原因。

若要解決此問題: