Pixieが使用するメモリの量を設定できます。インストール中に、Helmを使用してメモリ要求と制限を設定するか、Pixieが短期間のデータストレージに使用するメモリの量を減らします。
ピクシーはどのようにメモリを使用しますか?
オープンソースのPixieプロジェクトの主な焦点は、リアルタイムのデバッグプラットフォームを構築することです。 Pixieは、長期的な耐久性のあるストレージソリューションを目的としたものではなく、NewRelicと組み合わせて使用するのが最適です。 New Relic統合は、数分ごとにPixieにクエリを実行し、PixieのテレメトリデータをNewRelicに保持します。
New Relic Pixie統合をインストールすると、DaemonSetを介してクラスター内の各ノードにvizier-pem
エージェントがデプロイされます。 vizier-pem
エージェントは、次の2つの主な目的でメモリを使用します。
- テレメトリデータの収集:アプリケーショントラフィックまたはCPUプロファイルのトレースなど。これらの値は、処理されるときにメモリのどこかに保存する必要があります。
- テレメトリデータの短期保存:NewRelicに保存される前。
デフォルトでは、 vizier-pem
ポッドには2Gi
メモリ制限と2Gi
メモリリクエストがあります。割り当てられたメモリの60%を短期間のデータストレージ用に確保し、残りの40%をデータ収集用に残します。
インストール後にPixieのメモリ使用量が増えるのはなぜですか?
Pixieをインストールした後、テレメトリデータの保存を開始すると、 vizier-pem
ポッドのメモリ使用量が増加します。 vizier-pem
のメモリ制限に達すると、新しいデータ用のスペースを確保するために古いテレメトリデータが期限切れになるため、メモリ使用率がそれ以上増加することはありません。
Pixieのメモリ使用量の構成
ほとんどのクラスターでは、デフォルトの2Gi
メモリ構成を使用することをお勧めします。ただし、特定のトラフィックの少ないクラスターの場合、Pixieは1Gi
の最小メモリ制限をサポートできます。アプリケーションポッドに対応するために、ノードの合計メモリの25%以下をPixieに割り当てることをお勧めします。たとえば、ノードの合計メモリが4Gi
の場合、 1Gi
メモリ制限を使用するようにPixieを構成する必要があります。
特定のメモリ制限でPixieをデプロイする
Pixieのvizier-pem
エージェントのデフォルトの2Gi
とは異なるメモリ制限を指定する場合は、インストール中に次の構成パラメーターをHelmチャートに追加できます。たとえば、 1Gi
のメモリ制限の場合、次を使用します。
-set pixie-chart.pemMemoryLimit=1Gi
特定のメモリ要求でPixieをデプロイする
デフォルトでは、 vizier-pem
のメモリ要求は制限と同じです。別のメモリ要求を指定する場合は、インストール中に次の構成パラメータをHelmチャートに追加できます。たとえば、 1Gi
メモリリクエストの場合、次を使用します。
--set pixie-chart.pemMemoryRequest=1Gi
重要
vizier-pem
メモリ要求はvizier-pem
メモリ制限以下である必要があります。
特定の短期データストレージを使用してPixieをデプロイする
デフォルトでは、 vizier-pem
ポッドは割り当てられたメモリの60%を短期間のデータストレージ用に確保し、残りの40%をコレクション用に残します。デフォルトの2Gi
メモリ制限の場合、これはvizier-pem
ポッドがデータストレージ用に1.2Gi
メモリを保持することを意味します。
短期間のストレージ用に別のメモリ量を指定する場合は、インストール中に次の構成パラメーターをHelmチャートに追加できます。たとえば、使用する短期データストレージの750MiB
の場合:
--set pixie-chart.dataCollectorParams.customPEMFlags.PL_TABLE_STORE_DATA_LIMIT_MB=750
トラブルシューティング
vizier-pem
ポッドがスケジュールに失敗したのはなぜですか?
vizier-pem
ポッドのスケジュールに失敗した場合、これは通常、要求された量のメモリを持たないノードがあるためです。
メモリ要求を1Gi
まで減らしてみてください。特に大規模または高トラフィックのクラスターの場合、 1Gi
では不十分であり、 vizier-pem
OOMKillが発生する可能性があります。これらのクラスターでは、制限に2Gi
など、リクエストよりも高い制限を設定できます。トラフィックの少ない小規模なクラスターには、 1Gi
制限付きの展開をお勧めします。
vizier-pem
ポッドがOOMKilledになったのはなぜですか?
Kubernetesにデプロイする利点の一部は、Kubernetesがクラスター内の他のポッドを保護するために多くのリソースを使用しているポッドをOOMKillすることです。
Pixieのvizier-pem
ポッドがメモリ制限を超えると、それらはOOMKilledになります。 Kubernetesは他のアプリケーションを保護するためにこれを行うため、他のポッドで問題が発生することはありません。定期的にOOMKilledされているvizier-pem
ポッドの場合は、より多くのメモリを備えたPixieを展開してみてください。