ICE Core

注意事項

アプリケーションディレクトリ名の制限

_から始まるアプリケーションディレクトリ名はシステムで予約しているため、使用できません。

設定によってバックエンドとの切断状態が長時間続くとメモリ使用量が漸増

「ICE Coreに接続情報の設定を行っていない」「接続情報の設定を行っていてもバックエンドが停止している」など、バックエンドと切断した状態が長時間続く構成で以下の条件を満たすと、ハートビート機能のメッセージが再送のために蓄積してメモリ使用量が漸増します。

  • cloud_config.jsonで{destination}.typeが"mqtt"かつ{destination}.compatible_modeがtrueの設定で、以下の全てを満たした場合
    • cloud_config.jsonに{destination}.config.optionsの要素がある
    • cloud_config.jsonの{destination}.config.options.qosに1あるいは2を設定していない
    • cloud_config.jsonの{destination}.config.options.queueQoSZeroを設定していない。または明示的にtrueを設定している
    • core_config.jsonのheartbeat.adapter.qosに0を設定していない
  • cloud_config.jsonで{destination}.typeが"mqtt"かつ{destination}.compatible_modeが未指定の設定で、以下の全てを満たした場合
    • cloud_config.jsonの{destination}.config.options.qosに0を設定しcore_config.jsonのheartbeat.adapter.qosに1か2を設定していない。またはcore_config.jsonのheartbeat.adapter.qosに0を設定している
    • cloud_config.jsonの{destination}.config.options.queueQoSZeroを設定していない。または明示的にtrueを設定している

このハートビートメッセージの蓄積は既定値で30分~1時間につき0.1KB程度であり、バックエンドと再接続したときに即座に解消されるためあまり問題になることはありませんが、メモリリークと誤認されたり、切断状態が長時間続くとメモリ不足によりプロセスが異常終了する場合もあります。

対処としては、ICE Coreを使用しない場合は停止するか、使用する場合は下記の回避設定を行ってください。ただしこの回避設定はICE Coreから送信するすべてのメッセージに影響する点ご注意ください。

  • cloud_config.jsonで「{destination}.typeが"mqtt"かつ{destination}.compatible_modeがtrue」であるdestinationに対し、{destination}.config.options.qosに要件に応じて0, 1, 2のいずれかを指定する
    • {destination}.config.options.qosに0を指定した場合は、更に{destination}.config.options.queueQoSZeroにfalseを設定する

プロキシサーバがHTTPSで通信先サーバがHTTPあるいはMQTT over WebSocketのパターンの際に、通信先サーバのURLがホスト名で指定されていると、プロキシサーバのHTTPS通信で指定するサーバ証明書が正しくても証明書のエラーが発生し、通信に失敗する

発生すると以下のログメッセージが出力されます。

cause=Hostname/IP does not match certificate's altnames: Host: "HTTPの接続先ホスト名". is not cert's CN: "HTTPSの接続先ホスト名"

本事象が発生した場合、cloud_config.jsonのconfig.proxy.options.servernameにHTTPSの接続先ホスト名を設定してください。

[v2.0.5以降] MQTT over WebSocketの通信で、100MBより大きいメッセージが受信できない

MQTT over WebSocketの通信では、DoS攻撃を防ぐために既定で受信できるメッセージサイズを100MB(104857600バイト)までに制限しています。この値を超えるサイズのメッセージは破棄されます。

[v2.0.5以降] MQTT Event Brokerとの通信でServer Name Indication(SNI)が常に有効になる

cloud_config.jsonのMQTT Event Broker用の設定においてuseSNIの値が無視され、Server Name Indicationが常に有効になります。

[v2.0.5以降] ICE Core起動時にログファイルに'Setting the TLS ServerName to an IP address is not permitted by RFC 6066. This will be ignored in a future version.'が出力される

MQTTSのURLをIPアドレス表記した場合に出力されます。この出力による影響は無いため無視してください。

制限事項

なし