> 데이터 베이스 > 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()를 호출하여 다시 연결을 시도합니다. handlerDisconnect.
  3. 연결 중 오류가 발생하면 오류를 기록하고 2초 안에 재연결 시도를 예약하여 과도한 재연결 시도를 방지합니다.
  4. 연결에 '오류' 이벤트 리스너를 설정합니다. 연결 수명 주기 동안 발생할 수 있는 오류를 모니터링하기 위한 개체입니다.
  5. 'PROTOCOL_CONNECTION_LOST' 오류가 감지되면, 서버 재시작 또는 유휴 시간 초과로 인해 연결이 끊어졌음을 알리고, 다시 생성하고 다시 연결하기 위해 handlerDisconnect 함수를 다시 트리거합니다.

이 접근 방식을 구현하면 MySQL 연결 끊김 오류를 효과적으로 처리하고 원활한 데이터베이스 연결을 보장할 수 있습니다. Node.js 애플리케이션에서.

위 내용은 Node.js MySQL 연결이 자정 무렵에 계속 끊어지는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿