programing

마리아드브:MySQL 서버가 사라졌습니다.

batch 2023. 7. 25. 20:45
반응형

마리아드브:MySQL 서버가 사라졌습니다.

응용 프로그램에서 꽤 오래 실행되는 트랜잭션 중에 "MySQL server has been away" 오류가 발생하는 문제가 있습니다.저는 이것이 이미 많이 요구되었다는 것을 알지만, 저는 가능한 모든 원인을 조사하기 위해 제 테스트를 시도했습니다.

저를 매우 당황스럽게 하는 한 가지는 MariaDB 서버의 로그에 있는 다음 오류 메시지입니다.

[경고] db: 'default' 사용자: 'root' 호스트: '10.0.0.18'(통신 패킷을 읽는 동안 시간 초과됨)

이렇게 하면 클라이언트가 연결 끊김을 보고하는 이유를 설명할 수 있지만, 이 오류는 클라이언트가 "MySQL server has been away" 오류를 보고하기 10-15분 전에 발생합니다.그동안 클라이언트는 문제없이 문 삽입을 행복하게 실행하고 있습니다.그러나 클라이언트가 select 문을 실행하자마자 문은 사실상 즉시 실패합니다.

다음과 같은 가능한 원인을 이미 확인했습니다.

  1. 서버가 항상 실행되고 있습니다.
  2. wait_message가 8시간으로 설정되었습니다. 이 시간은 트랜잭션이 실패해야 하는 시간보다 훨씬 깁니다.
  3. max_allowed_packet이 512M으로 설정되었습니다. 쿼리가 매우 짧은 select 문이므로 충분해야 합니다.
  4. 서버의 메모리가 부족하지 않습니다.

이 문제는 MariaDB 로그의 "통신 패킷 읽기 시간 초과" 오류와 관련이 있을 것입니다.하지만 고객이 왜 여전히 데이터를 쓸 수 있는지에 대해서는 생각할 수 없습니다.그리고 wait_timeout이 매우 높기 때문에 이 시간 초과가 처음에 발생하는 이유입니다.

일부 시스템 정보:

  • MariaDB 10.5.1에서 실행 중입니다.
  • 클라이언트는 python 3.6을 사용하고 libmysql을 사용하는 mysqlclient는 데이터베이스 연결에 사용됩니다.

제가 뭘 찾아야 할지 아시는 분들이 계시기를 바랍니다. 정말 미치겠네요.

언급URL : https://stackoverflow.com/questions/71677258/mariadb-mysql-server-has-gone-away

반응형