Asayomu Tech
注目★★★★GitHub Advisory

node-opcua 2.169.0、TCPソケット枯渇でコンテナ停止

30秒で把握

  • 1node-opcua 2.169.0 が再接続時に TCP ソケットを無制限蓄積
  • 23 秒間隔で約 20 ソケット/分を漏出し OOM kill に到達
  • 3時計ずれによる BadInvalidTimestamp 誤認と socket.end() が原因

要約

node-opcua 2.169.0 は、時計ずれした OPC UA サーバーへの自動再接続で TCP ソケットを無制限に蓄積し、メモリ枯渇や OOM kill を引き起こす。既定の keepSessionAlive: true で、BadInvalidTimestamp を通信障害と誤認して 3 秒ごとに再接続する。失敗時に socket.end() が FIN-WAIT-2 を残すため、約 20 ソケット/分、約 1,200 ソケット/時のペースで資源を消費する。修正案は socket.destroy() の使用と、時刻検証エラーを再接続対象から分離することだ。

あなたへの影響

node-opcua 2.169.0 を使う日本の運用チームは、時計同期と FIN-WAIT-2 の増加を確認し、修正版が公開されるまで keepSessionAlive の無効化など影響回避策を検証すべきです。

推奨:BadInvalidTimestamp はサーバー到達後の時刻検証エラーで、ネットワーク断とは異なります。

詳細を読む → 元記事へ※ 本文は元記事をご確認ください (asayomu は要約のみ提供)

関連する記事

※ 外部記事の権利は原著作者に帰属します。著作権削除要請は copyright@asayomu.jp までご連絡ください(受領確認 24h・実処理 72h 以内)。