メインコンテンツへスキップ
このページは先行公開版です。内容は今後予告なく更新される可能性があります。

Helm チャートの値を表示

helm show values dify/dify

1. リソース割り当ての改善

  • Helm チャート内の各サービスのリソース割り当てを調整することで、Dify のパフォーマンスを向上させることができます。
  • 使用している環境やリソース状況に応じて値を増やしてください。
  • 各コンポーネントの推奨設定:
分類コンポーネントReplicasRequest CPURequest MemLimit CPULimit Mem備考
コアアプリAPI611 GB12 GB
Worker244 GB48 GB
Worker Beat112 GB24 GB
Web10.51 GB12 GB
Sandbox122 GB24 GB
エンタープライズEnterprise122 GB22 GB
Enterprise_Audit112 GB24 GB
Enterprise_Frontend112 GB12 GB
プラグインPlugin Daemon112 GB24 GB
Plugin Controller10.51 GB12 GB
Plugin Connector112 GB12 GB
Plugin Manager112 GB24 GB
基盤SSRF Proxy10.50.5 GB11 GB
Gateway112 GB24 GB
Unstructured-----必要に応じて
MinIO-----必要に応じて
備考説明:
  • API:必要に応じて replica を水平スケール
  • Worker:必要に応じて replica を水平スケール(大量のファイルアップロードがある場合)
  • Sandbox:必要に応じて replica を水平スケール(大量の計算タスクがある場合)
    • maxWorkers: 4(ワーカープロセス数)
    • workerTimeout: 15(呼び出しタイムアウト)
設定例:
api:
  replicas: 6
  resources:
    requests:
      cpu: 1
      memory: 1Gi
    limits:
      cpu: 1
      memory: 2Gi

worker:
  replicas: 2
  resources:
    requests:
      cpu: 4
      memory: 4Gi
    limits:
      cpu: 4
      memory: 8Gi

sandbox:
  replicas: 1
  maxWorkers: 4
  workerTimeout: 15
  resources:
    requests:
      cpu: 2
      memory: 2Gi
    limits:
      cpu: 2
      memory: 4Gi

2. 外部 PostgreSQL のパフォーマンス向上

2.1 データベース最大接続数の計算

データベースを設定する際、以下の式を使用して必要な最大接続数を計算する必要があります:
最大接続数 = (SQLALCHEMY_POOL_SIZE + SQLALCHEMY_MAX_OVERFLOW) × API Worker数 × API Replicas数
          + (SQLALCHEMY_POOL_SIZE + SQLALCHEMY_MAX_OVERFLOW) × Worker Worker数 × Worker Replicas数
パラメータ説明:
  • SQLALCHEMY_POOL_SIZE: 各 worker のデータベース接続プールサイズ
  • SQLALCHEMY_MAX_OVERFLOW: プールがオーバーフローした際の追加接続数
  • API Worker数: API サービスの serverWorkerAmount
  • Worker Worker数: Worker サービスの celeryWorkerAmount
計算例: 以下の設定を想定:
  • API: replicas=6, serverWorkerAmount=1
  • Worker: replicas=2, celeryWorkerAmount=1
  • SQLALCHEMY_POOL_SIZE=100
  • SQLALCHEMY_MAX_OVERFLOW=150
最大接続数は:
(100 + 150) × 1 × 6 + (100 + 150) × 1 × 2 = 1500 + 500 = 2000
計算結果に対して 20-30% の余裕を持たせることを推奨します。トラフィックの急増に対応するためです。上記の例では、max_connections を 2400-2600 に設定することをお勧めします。

2.2 完全な設定例

api:
  replicas: 6
  serverWorkerAmount: 1
  extraEnv:
    - name: SQLALCHEMY_POOL_SIZE
      value: "100"
    - name: SQLALCHEMY_MAX_OVERFLOW
      value: "150"
  resources:
    requests:
      cpu: 1
      memory: 1Gi
    limits:
      cpu: 1
      memory: 2Gi

3. パフォーマンス監視の推奨事項

3.1 主要なメトリクス

システムが正常に動作していることを確認するため、以下のメトリクスを監視してください: データベース接続:
  • 現在のアクティブ接続数
  • 接続プール使用率
  • 接続待ちリクエスト数
リソース使用状況:
  • CPU 使用率(70% 以下を推奨)
  • メモリ使用率(80% 以下を推奨)
  • ディスク I/O
アプリケーションパフォーマンス:
  • API レスポンスタイム
  • Worker タスクキューの長さ
  • タスク実行時間

3.2 一般的なパフォーマンスボトルネック

症状考えられる原因解決策
API レスポンスが遅いAPI replicas が不足API replicas を増やす
タスクが蓄積されるWorker の処理能力不足Worker replicas または celeryWorkerAmount を増やす
データベース接続の枯渇接続数の設定不足max_connections を増やすか接続プールを最適化
メモリ不足メモリ上限が低すぎるmemory limits を増やす
CPU スロットリングCPU 上限が低すぎるCPU limits を増やす