ページの先頭です。
ここから本文です。

お知らせ

[WebOTX] JMSサーバで新規接続ができなくなる問題と対策について


概要

WebOTX Application Serverにおいて、JMSのコネクションがクローズされてから2分後にJMSサーバへの接続が行われると、タイミングによりJMSサーバがストールし、以降の新規接続要求を受け付けることができない。


影響のある製品

  • WebOTX Standard-J Edition V6.1~V6.5
  • WebOTX Standard Edition V6.2~V6.5
  • WebOTX Enterprise Edition V6.2~V6.5
  • WebOTX Application Server Standard-J Edition V7.1~V8.1
  • WebOTX Application Server Express V8.2~V10.1 (※)
  • WebOTX Application Server Foundation V8.2~V8.5
  • WebOTX Application Server Standard V8.2~V10.1
  • WebOTX Application Server Enterprise V8.2~V9.5
  • WebOTX Enterprise Service Bus V6.4~V8.5
  • WebOTX Portal V8.2~V10.1
  • WebOTX Enterprise Service Bus V9.2~V10.1、および、WebOTX Portal V9.2~V10.1にバンドルされているWebOTX Application Server Expressを使用している場合にも該当します。


詳細

WebOTX Application ServerのJMSサーバとのコネクションに関して、次のすべての条件を満たす場合に、タイミングにより、JMSサーバでデッドロックが発生します。

  • 次の計算式で求められる数を超えて接続したJMSクライアントが、JMSサーバとのコネクションをクローズする
  • wojms.jms.min_threads / 2 (デフォルトでは5)

    (wojms.jms.min_threadsプロパティは、コネクションサービスが使用するスレッドプールの最小数で、デフォルトは10。コネクション毎に、2つのスレッドを使用する。)

  • コネクションがクローズされてから約2分後に、JMSクライアントがJMSサーバへ接続要求を行う
  • JMSサーバが、クローズされたコネクションが使用していたスレッドを、接続要求のあったコネクションに割り当てる

本事象が発生すると、接続要求を行ったJMSクライアントに、JMSサーバからの応答が届かず、javax.jms.ConnectionFactory#createConnection()等の呼び出しがストールし、新規に接続を行うことができなくなります。

ただし、既に接続済みのコネクションを利用したJMSメッセージの送受信処理には影響はありません。


JMSクライアントからの接続要求がストールした場合、下記の方法でJMSサーバのスレッドダンプを採取し、デッドロックの記録の有無により、本事象であるかを判断できます。

  • スレッドダンプ採取コマンド
  • otxadmin> login --user admin --password **** --port (ポート番号)
    otxadmin> invoke server.jms-service.dumpThreads

  • スレッドダンプ出力先ファイル
  • (V9以前) ${INSTANCE_ROOT}/logs/wojms/std.log
    (V10以降) ${INSTANCE_ROOT}/logs/jmq/std.log

  • 出力内容
  • スレッドダンプの最後に、次のような、"jms_ACCEPT"スレッドと、"WOJMSTimerThread"スレッド間のデッドロックが記録されている場合は、本事象が発生している可能性があります。

    Found one Java-level deadlock:
    =============================
    "jms_ACCEPT":
    waiting to lock monitor xxxxx (object xxxxx, a com.nec.webotx.messaging.jmq.jmsserver.service.imq.OperationRunnable), which is held by "WOJMSTimerThread"
    "WOJMSTimerThread":
    waiting to lock monitor xxxxx (object xxxxx, a com.nec.webotx.messaging.jmq.jmsserver.util.pool.ThreadPool),
    which is held by "jms_ACCEPT"


対処方法

パッチの公開時期は現在検討中です。急ぎでパッチが必要な場合はご連絡ください。


回避方法

ありません。


更新履歴

2019/04/03 初版

製品名カテゴリ

WebOTX
WebOTX Application Server
WebOTX Service Integration
WebOTX Portal

  • コンテンツID: 3010102723
  • 公開日: 2019年04月10日
  • 最終更新日:2019年04月11日
ここからページ共通メニューです。 ページ共通メニューを読み飛ばす。