アイドル状態の Node.js サーバーでの MySQL "read ECONNRESET" エラー: 原因と解決策
はじめに
Node.js サーバーを MySQL に接続するアイドル時間が原因で ECONNRESET エラーの読み取りが発生すると、node-mysql モジュールが問題に直面することがあります。
質問 1: 接続の切断
はい、問題は MySQL のプルーニング アイドルに起因しているようです。 wait_timeout 設定による接続。デフォルトの 8 時間の制限は、サーバーを数時間アイドル状態にしておくと期限切れになる可能性があります。
質問 2: 接続プールの制限
node-mysql が接続プールを管理している間、クエリが試行されるまで切断を検出できない場合があります。この設計上の欠陥により、アイドル後の最初のクエリでエラーが避けられなくなります。
質問 3: 外部原因
読み取り ECONNRESET エラーはよくあることですが、他の可能性を考慮する価値があります。原因。ただし、さらなる調査により、外部要因ではなく、MySQL のタイムアウトの問題が示されています。
解決策
1. MySQL タイムアウトを増やす:
接続プルーニングを防ぐために、MySQL wait_timeout 変数をより大きな値 (例: 8 時間で 28800 秒) に設定します。
2.ハートビート クエリを使用します:
定期的なクエリ (例: SELECT 1;) を実行して、接続を維持し、プルーニングを防ぎます。
3.アイドル接続のプルーニングを実装します:
アイドル状態の接続を自動的にプルーニングするには、idleTimeoutMillis オプションを備えたノード プール モジュールを使用します。
結論
MySQL タイムアウト設定に対処し、node-mysql での接続処理を強化することで、開発者は次のことが可能になります。アイドル状態の Node.js サーバーでの ECONNRESET 読み取りエラーを軽減します。潜在的な外部原因を考慮することも賢明ですが、この場合、MySQL の wait_timeout が主な原因であるようです。
以上がMySQL に接続されているアイドル状態の Node.js サーバーで「read ECONNRESET」エラーが発生するのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。