# 大量クライアント切断アラート

大量クライアント切断アラートは、短時間のうちに多くのクライアントがデプロイメントから切断されたことを示します。このアラートは、**30分前に少なくとも100接続があり**、かつ**切断されたクライアントの割合が設定された閾値を超えた場合**にのみ発生します。

この状態は通常、多数のクライアントがほぼ同時にEMQX接続を失ったことを示します。主な原因としては、ネットワークの不安定、地域的なネットワーク障害、信頼できる自動再接続機能を持たないクライアントなどが挙げられます。

## ネットワークの不安定および自動再接続の失敗

### 症状

ネットワークの不安定、地域的なキャリア障害、またはネットワークメンテナンスにより、多数のクライアント接続が短時間で途切れます。クライアントが自動的に再接続しない場合、接続数は継続的に減少し、アラートが発生します。

デプロイメントの**モニター**ページでは、接続数が短時間で急激に減少し、影響を受けたクライアントが特定の地域やキャリアネットワークに集中していることが確認できます。

### 主な原因

- ネットワークの不安定または地域的なネットワーク障害
- クライアントが正しく自動再接続を実装していない

### 対応策

- クライアントが自動的に再接続することを確認し、できれば指数的バックオフを利用してください。
- ネットワークプロバイダーに不安定や障害が発生していないか確認し、必要に応じてバックアップ回線やクロスリージョンの災害復旧計画を利用してください。

## クラスター変更やノード障害および再接続失敗

### 症状

EMQXクラスターのアップグレード、スケール操作、またはメンテナンス中に、ノードの切り替えや再起動が発生すると、影響を受けたノードに接続していたクライアントが切断されます。これらのクライアントが迅速に再接続しない場合、または操作中にクラスターに問題が発生した場合、多数のクライアントが同時に切断されてアラートが発生します。

デプロイメントの**モニター**ページでは、切断時間がノードの再起動、スケールアウト、またはスケールインのイベントとほぼ一致します。

### 主な原因

- クラスターのアップグレード、スケール操作、メンテナンス中のノード切り替え
- ノード障害による接続の中断
- クライアントの自動再接続がない、または失敗している

### 対応策

- 計画されたクラスターのメンテナンスやアップグレード前に、EMQXの告知を確認し、クライアント側の復旧手順を準備してください。
- ノードの再起動や切り替え後にクライアントが確実に再接続することを確認してください。
- クラスター変更やノード障害で多数のクライアントが切断された場合は、速やかにEMQXテクニカルサポートに緊急サポートチケットを提出してください。

## トラブルシューティング

1. EMQX Cloudコンソールにログインし、対象のデプロイメントに入ります。

2. **Alerts** -> **Alert List** に移動し、大量クライアント切断アラートの有無を確認し、発生期間と範囲を確認します。

   ![クライアント切断アラート記録](./_assets/clients_disconnect_alerts.png)

3. **Monitor** -> **Metrics** -> **Timeline** -> **Connections** に移動し、過去30分間に接続数が100以上から減少し、設定された閾値を超えているかを確認します。

   ![モニタリングタイムラインの接続数](./_assets/clients_disconnect_monitor.png)

4. アラート発生時間とネットワーク障害、地域的な障害、クラスターのノード状態変化を比較します。

## モニタリングと統計

**Metrics** -> **Timeline** -> **Connections** にて、全体のクライアント接続傾向を監視し、切断率が回復しているかを判断します。

## クライアント切断イベントの追跡

- EMQX Cloudはメッセージブローカーであり、過去のクライアント情報（切断時間や理由など）を保持しません。

- 切断イベントを継続的に追跡するには、`$events/client_disconnected` イベントトピックのデータ統合ルールを作成し、イベントを転送または保存してください。例：

  ```sql
  SELECT
      *
  FROM
      "$events/client_disconnected"
  ```

- `clientid`、`reason`、`disconnected_at` などのフィールドでフィルタリング可能です。詳細は[SQLデータソースとフィールド](../../rule_engine/rule_engine_events.md#disconnect-event-events-client-disconnected)をご参照ください。
