> ## Documentation Index
> Fetch the complete documentation index at: https://enterprise-docs.dify.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# パフォーマンスチューニング

> このページは先行公開版です。内容は今後予告なく更新される可能性があります。

## Helm チャートの値を表示

```bash theme={null}
helm show values dify/dify
```

***

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

* Helm チャート内の各サービスのリソース割り当てを調整することで、Dify のパフォーマンスを向上させることができます。
* 使用している環境やリソース状況に応じて値を増やしてください。
* 各コンポーネントの推奨設定：

| 分類       | コンポーネント              | Replicas | Request CPU | Request Mem | Limit CPU | Limit Mem | 備考     |
| -------- | -------------------- | -------- | ----------- | ----------- | --------- | --------- | ------ |
| コアアプリ    | API                  | 6        | 1           | 1 GB        | 1         | 2 GB      | ①      |
|          | Worker               | 2        | 4           | 4 GB        | 4         | 8 GB      | ②      |
|          | Worker Beat          | 1        | 1           | 2 GB        | 2         | 4 GB      |        |
|          | Web                  | 1        | 0.5         | 1 GB        | 1         | 2 GB      |        |
|          | Sandbox              | 1        | 2           | 2 GB        | 2         | 4 GB      | ③      |
| エンタープライズ | Enterprise           | 1        | 2           | 2 GB        | 2         | 2 GB      |        |
|          | Enterprise\_Audit    | 1        | 1           | 2 GB        | 2         | 4 GB      |        |
|          | Enterprise\_Frontend | 1        | 1           | 2 GB        | 1         | 2 GB      |        |
| プラグイン    | Plugin Daemon        | 1        | 1           | 2 GB        | 2         | 4 GB      |        |
|          | Plugin Controller    | 1        | 0.5         | 1 GB        | 1         | 2 GB      |        |
|          | Plugin Connector     | 1        | 1           | 2 GB        | 1         | 2 GB      |        |
|          | Plugin Manager       | 1        | 1           | 2 GB        | 2         | 4 GB      |        |
| 基盤       | SSRF Proxy           | 1        | 0.5         | 0.5 GB      | 1         | 1 GB      |        |
|          | Gateway              | 1        | 1           | 2 GB        | 2         | 4 GB      |        |
|          | Unstructured         | -        | -           | -           | -         | -         | 必要に応じて |
|          | MinIO                | -        | -           | -           | -         | -         | 必要に応じて |

**備考説明：**

* ① **API**：必要に応じて replica を水平スケール
* ② **Worker**：必要に応じて replica を水平スケール（大量のファイルアップロードがある場合）
* ③ **Sandbox**：必要に応じて replica を水平スケール（大量の計算タスクがある場合）
  * `maxWorkers`: 4（ワーカープロセス数）
  * `workerTimeout`: 15（呼び出しタイムアウト）

**設定例：**

```yaml theme={null}
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
```

<Warning>
  計算結果に対して 20-30% の余裕を持たせることを推奨します。トラフィックの急増に対応するためです。上記の例では、`max_connections` を 2400-2600 に設定することをお勧めします。
</Warning>

### 2.2 完全な設定例

```yaml theme={null}
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 を増やす                             |
