第6章 既知の問題
Cryostat のリリースには、Red Hat が認識し、後の製品開発段階で修正される可能性がある問題が含まれている場合があります。既知の各問題の説明と解決策を確認してください。
OpenShift SDN デフォルト CNI ネットワークプロバイダー
Cryostat 2.0 は、Cryostat ノードで実行しているノードとは異なるノードにある JVM の以下の設定を持つ OpenShift クラスターを接続できません。
- ソフトウェア定義ネットワーク (SDN) メソッドを、クラスター上の Pod 間の通信を行うための統合クラスターネットワークとして使用する。
- デフォルトの Container Network Interface (CNI) ネットワークプロバイダーを、コンテナーのネットワークインターフェイスを設定するためのプラグインを作成するために使用する。
この既知の問題を解決するには、SDN メソッドではなく Open Virtual Network (OVN) メソッドを使用するようにクラスターを設定します。OVN メソッドには、SDN メソッドと同様の次の設定が含まれています。
- Open vSwitch (OVS) を使用してネットワークトラフィックを管理する。
- CNI ネットワークプロバイダーをデフォルトとして設定するプラグインを使用する。
関連情報
- SND メソッドの詳細は、Red Hat OpenShift ドキュメントの About the OpenShift SDN default CNI network provider を参照してください。
- OVN メソッドの詳細は、Red Hat OpenShift ドキュメントの About the OVN-Kubernetes default Container Network Interface (CNI) network provider を参照してください。
アーカイブアップロード API のメモリー不足 (OOM)
クライアントが Cryostat HTTP POST
/api/v1/recordings
ハンドラーにリクエストを送信すると、Cryostat 2.0 は予想よりも多くのメモリーを消費します。このハンドラーは Cryostat 2.0 インスタンスの /opt/cryostat.d/recordings.d
ディレクトリーを参照しており、ユーザーはこのハンドラーを使用して .jfr
バイナリーファイルをこのディレクトリーにアップロードできます。
Cryostat Operator は、OpenShift プロジェクトにデプロイされた Cryostat インスタンスに対して 512 MB のデフォルトのメモリー制限を設定します。150 MB 以上の .jfr
ファイルを Cryostat 2.0 インスタンスにアップロードすると、OpenShift クラスターの OOM (Out of Memory) Killerが、デプロイされた Cryostat インスタンスを含む Pod を停止します。
この既知の問題は、.jfr
バイナリーファイルを Cryostat 2.0 インスタンスの永続ストレージの場所にコピーすることで解決できます。この方法を使用すると、/opt/cryostat.d/recordings.d
ディレクトリーに .jfr
バイナリーを保存するためにクライアント要求を Cryostat HTTP POST
/api/v1/recordings
ハンドラーに送信する必要がなくなります。
次のコマンドを発行して、.jfr
バイナリーファイルを Cryostat 2.0 インスタンスの永続ストレージの場所にコピーできます。
oc exec -i -n <your_namespace> -c <cryostat_container_name> <cryostat_pod_name> – mkdir /opt/cryostat.d/recordings.d/unlabelled oc cp vertx-fib-demo-6f4775cdbf-82dvl_150mb_20211006t152006z.jfr <cryostat_pod_name>:/opt/cryostat.d/recordings.d/unlabelled/vertx-fib-demo-6f4775cdbf-82dvl_150mb_20211006t152006z.jfr -c <cryostat_container_name>
/opt/cryostat.d/recordings.d/
パスに unlabelled
ディレクトリーがすでに存在する場合、前述の oc exec
コマンドは失敗します。失敗したコマンドメッセージを無視して、oc cp
コマンドを続行することを選択できます。
.jfr
バイナリーファイルを PVC アーカイブの場所に直接コピーした後、curl
、httpie
、または wget
コマンドを使用して、Cryostat 2.0 インスタンスに .jfr
ファイルが存在することを確認できます。
次の例は、oc cp
コマンドによって、永続ストレージの場所にコピーされたアップロード済みファイルを Cryostat が認識しているか curl
コマンドで確認する方法を示しています。この例の <cryostat_url> 値は https://cryostat-sample-myproject.apps-crc.testing:443
に解決されますが、<cryostat_url> 値はお使いのアプリケーションの URL に置き換えることができます。oc status
コマンドを発行すると、アプリケーションの URL を判別できます。
$ curl -kv -H Authorization:"Bearer $(oc whoami -t)" <cryostat_url>/api/v1/recordings
関連情報
- Cryostat コンテナーのメモリー制限の問題を解決するために使用できるコマンドの詳細は、Red Hat OpenJDK Jira プロジェクトの OPENJDK-495 を参照してください。
統合された Grafana コンポーネントのファイルアップロード制限
Cryostat 2.0 の場合、統合された View in Grafana コンポーネントは、jfr-datasource
コンテナーの設定の問題により、10 MB を超える JFR ファイルを受け入れることができません。
デプロイされた Cryostat 2.0 Pod の jfr-datasource
コンテナーは、デフォルトの quarkus.http.limits.max-body-size
パラメーターを含むデフォルトの Quarkus 設定を使用します。このパラメーターは、Quarkus 上のファイルの最大サイズ制限を設定します。パラメーターのデフォルト値は 10 MB です。
クライアントが 10 MB を超える JFR ファイルをアップロードしようとすると、jfr-datasource
Web サーバーはファイルを拒否し、HTTP 413
エラーメッセージを出力します。
この既知の問題は、次の手順を完了することで解決できます。
- Cryostat 2.0 インスタンスの Recordings メニューで、リストされているアクティブまたはアーカイブのレコーディングに移動します。
- 対象のレコーディングのオーバーフローメニューから、Download Recording オプションをクリックします。
- ローカルシステムの任意の場所にファイルを保存します。
- ダウンロードした JFR ファイルを Java Mission Control (JMC) デスクトップアプリケーションで開きます。