アーティクル - CS395020

ThingWorx HA で接続が失われた場合、Integration Runtime インスタンスの接続が必ずしも回復できるとは限りません。

修正日: 28-Mar-2025   


注記:ここに記載されている情報は、お客様の利便性向上のため機械翻訳ソフトを使用しています。PTCは、ここに記載されている情報の翻訳の正確性について、一切の責任を負いませんので、ご了承ください。英語の原文を参照するには、こちら。この機械翻訳に関する詳細は、こちら。
お知らせいただき、ありがとうございます。この機械翻訳をレビューします。

適用対象

  • ThingWorx Platform 9.4 to 9.5

説明

  • ThingWorx HAでは、統合ランタイムインスタンスはロードバランサーNginxを介して接続サーバーに接続されます。
  • ThingWorx HAには2台以上の接続サーバーが稼働しています
  • WSCommunicationサブシステムのQueryEndpointSessionsおよびGetBoundThingsForEndpointサービスを使用して、IRがどの接続サーバーに接続されているかを確認します。
  • 接続サーバーを手動で終了してシャットダウンします
  • 接続された統合ランタイムは、ロードバランサーの助けを借りて、接続を他の利用可能な接続サーバーにルーティングすることで、接続障害から回復することが期待されます。
  • IR ログが以下のエラー メッセージで停止し、回復を試みている兆候が見られません。
[Timer-0] ERROR c.t.i.u.RemoteServiceUtils - Error while invoking Health Check on Thingworx
java.lang.Exception: No open connections were available on endpoint 0
	at com.thingworx.communications.common.endpoints.CommunicationEndpoint.getConnection(CommunicationEndpoint.java:397)
	at com.thingworx.communications.common.endpoints.CommunicationEndpoint.sendMessage(CommunicationEndpoint.java:416)
	at com.thingworx.communications.common.endpoints.CommunicationEndpoint.sendRequest(CommunicationEndpoint.java:531)
	at com.thingworx.communications.common.endpoints.CommunicationEndpoint.sendRequest(CommunicationEndpoint.java:500)
	at com.thingworx.communications.client.BaseClient.sendRequest(BaseClient.java:1076)
	at com.thingworx.communications.client.BaseClient.invokeService(BaseClient.java:418)
	at com.thingworx.communications.client.BaseClient.invokeService(BaseClient.java:372)
	at com.twx.integration.client.things.IntegrationRuntimeServer.invokeService(IntegrationRuntimeServer.java:101)
	at com.twx.integration.utils.RemoteServiceUtils.getHealthResponse(RemoteServiceUtils.java:156)
	at com.twx.integration.Entrypoint$HealthTask.run(Entrypoint.java:112)
	at java.base/java.util.TimerThread.mainLoop(Timer.java:556)
	at java.base/java.util.TimerThread.run(Timer.java:506)
[Timer-0] WARN  c.t.c.c.BaseClient - Unable to set message authentication because Client CommunicationEndpoint is not authenticated
[Client-EndpointMonitor-1] ERROR c.t.c.c.ConnectedThingClient - Unable To Bind Things: Could not bind things: Error trying to process message: Binding failed, see server log for more information V1BindMessage [header=V1MessageHeader [messageType=10, requestId=101, endpointId=1, sessionId=1670095344, flags=0], gatewayName=IR-WIN-QGPP8TIB5JV-ef087aef-ef7c-44a1-92b1-f0c77bbaecad, gatewayType=IntegrationRuntime, names=[IR-WIN-QGPP8TIB5JV-ef087aef-ef7c-44a1-92b1-f0c77bbaecad, IR-WIN-QGPP8TIB5JV-ef087aef-ef7c-44a1-92b1-f0c77bbaecad]]
  • 時々再接続の試みが発生し、IRログで以下のログを見つけることができます。
[Client-EndpointMonitor-1] ERROR c.t.c.c.e.ClientCommunicationEndpoint - Refilling connections on [endpoint 0, uri: ws://<ip>:<port>/Thingworx/WS] failed : timeout waiting for websocket handshake to complete
[Client-EndpointMonitor-1] ERROR c.t.c.c.e.ClientCommunicationEndpoint - Exception refilling connections was:
java.util.concurrent.TimeoutException: timeout waiting for websocket handshake to complete
	at com.thingworx.communications.client.connection.netty.NettyClientConnectionFactory$HandshakeCompletionNotifier.await(NettyClientConnectionFactory.java:693)
	at com.thingworx.communications.client.connection.netty.NettyClientConnectionFactory.createConnection(NettyClientConnectionFactory.java:398)
	at com.thingworx.communications.client.endpoints.ClientCommunicationEndpoint.refillConnections(ClientCommunicationEndpoint.java:230)
	at com.thingworx.communications.common.endpoints.monitor.ConnectivityMonitorTask.dutyCycleOn(ConnectivityMonitorTask.java:159)
	at com.thingworx.communications.common.endpoints.monitor.ConnectivityMonitorTask.run(ConnectivityMonitorTask.java:306)
	at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
	at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
	at java.base/java.lang.Thread.run(Thread.java:829)


最新バージョンはこちらを参照ください CS395020