ホームページ > データベース > mysql チュートリアル > Node.js MySQL 接続が真夜中頃に切断され続けるのはなぜですか?

Node.js MySQL 接続が真夜中頃に切断され続けるのはなぜですか?

Susan Sarandon
リリース: 2024-12-09 01:51:12
オリジナル
1023 人が閲覧しました

Why Does My Node.js MySQL Connection Keep Dropping Around Midnight?

MySQL 接続が失われました: 「接続が失われました: サーバーが接続を閉じました」エラーを解決する

Node.js と MySQL を使用する場合、サーバーが接続を閉じたことを示すエラーが発生する場合があります。これは通常、午前 12 時から午前 2 時頃に発生するため、困惑するでしょう。エラー メッセージは、次のように表示されることがよくあります:

Error: Connection lost: The server closed the connection.
at Protocol.end (/opt/node-v0.10.20-linux-x64/IM/node_modules/mysql/lib/protocol/Protocol.js:73:13)
at Socket.onend (stream.js:79:10)
at Socket.EventEmitter.emit (events.js:117:20)
at _stream_readable.js:920:16
at process._tickCallback (node.js:415:13)
ログイン後にコピー

推奨される解決策を試しても、問題は解決しません。このエラーを効果的に処理するためのより包括的なアプローチは次のとおりです。

var db_config = {
  host: 'localhost',
  user: 'root',
  password: '',
  database: 'example'
};

var connection;

function handleDisconnect() {
  connection = mysql.createConnection(db_config); // Recreate the connection

  connection.connect(function(err) {              // Attempt to connect
    if(err) {
      console.log('error when connecting to db:', err);
      setTimeout(handleDisconnect, 2000); // Delay reconnection attempts
    }
  });

  connection.on('error', function(err) {
    console.log('db error', err);
    if(err.code === 'PROTOCOL_CONNECTION_LOST') { // Connection lost due to server restart or idle timeout
      handleDisconnect();
    } else {
      throw err;
    }
  });
}

handleDisconnect();
ログイン後にコピー

このコードは次の処理を行います。

  1. handleDisconnect 関数で MySQL 接続オブジェクトを再作成します。 .
  2. 内で connection.connect() を呼び出して再接続を試みます。 handleDisconnect.
  3. 接続中にエラーが発生した場合、エラーをログに記録し、過剰な再接続試行を避けるために 2 秒以内に再接続試行をスケジュールします。
  4. 接続上で「エラー」イベント リスナーを確立します。オブジェクトを使用して、接続ライフサイクル中に発生する可能性のあるエラーを監視します。
  5. 「PROTOCOL_CONNECTION_LOST」エラーが検出された場合、サーバーの再起動またはアイドル タイムアウトによる接続の喪失を示す場合、handleDisconnect 関数が再度トリガーされ、再作成と再接続が行われます。

このアプローチを実装することで、MySQL 接続喪失エラーを効果的に処理し、シームレスなデータベース接続を確保できます。 Node.js アプリケーションで。

以上がNode.js MySQL 接続が真夜中頃に切断され続けるのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート