재현 : MySQL은 MySQL 데이터베이스 연결이 자동으로 연결 해제 연결 문제가 자동으로 발생하는 유휴 8 시간 분리입니다

전송 : https://www.cnblogs.com/ay-a/p/10520425.html

MySQL의 유휴 연결이 자동으로 분리 문제는 8 시간 발생

 

문제의 I. 설명

최근 정상 같은 실시간 데이터 저장을보고 다음날 아침도 일반 보관, 전날 밤에 이상한 문제를 여러 번 MySQL 데이터베이스, 기록 데이터를 발생, 히스토리 데이터는 저장되지 않습니다. 오랫동안 나는 문제를 찾지 못했습니다. 나중에주의 생각은, 히스토리 데이터 세트의 변화는 저장된 데이터는 긴 MySQL의 연결의 결과로, 데이터베이스에 데이터를 쓰지 자동으로 연결 해제하지 않는 한, 동일하지 않습니다. 그런 다음 비트 길이 MySQL의 유효 유휴 연결 8 시간 말을 살펴 자동으로 연결됩니다 바이두. 아, 조금 느낌, 그것이 있어야는 이유입니다.

둘째, 문제 해결

MySQL의보기에서 볼 수있는 정보에 따라 유효 기간은 각각 유휴 연결을 설정할 수 있습니다, 두 개의 매개 변수를 가지고 interactive_timeoutwait_timeoutMySQL의 설정 파일로 제공 될 수있다. 이에 따라, 조사가 수행 될 수있다.

  1. 사용 show variables like '%timeout%';위의 두 매개 변수의 값을 조회하는 명령을, 검사가 28800 (초, 단 8 시간)입니다.
  2. MySQL은 구성 파일을 수정 interactive_timeout하고 wait_timeout그래서 자동으로 폐쇄하여 연결된 사용하지 않고, 100 초 100이다.
  3. MySQL은 데이터베이스, 중간 일시 정지 삼분 (유휴 연결이 해제되었는지 확인하기 위해), 당신이 사용할 수에 데이터를 삽입하기 시작하는 서비스를 다시 시작 show status like 'Threads%'연결의 현재 수를 볼 수 명령을 쿼리 결과는 Threads_connected현재 연결의 수입니다.
  4. 정말 재현 성공적으로 저장 문제에 데이터를 보이지 않았다 및 이유를 알아, MySQL의에 데이터를 삽입 계속합니다.

셋째, 문제를 해결하기 위해

  1. 코드 데이터 저장 부, 분리 할 다시 연결이있는 코드 만 연결이 문제가 유효한 부분 기록이다 심사 위원을 참조에 확인이없는 mysql_query반환 값, 데이터는 경우에는 장애 로그 저장되지 않습니다.
  2. 끊어진을 다시 자동 코드를 수정 확인 mysql_query로그 및 각 데이터베이스 연산 결과가 기록되어 있도록 반환 값을 발생시킨다. 참고 : MySQL의 C / C ++ API가  mysql_query성공적인 작동을 위해 0을 반환, 비 - 제로 운영에 실패했습니다.

문제의 I. 설명

최근 정상 같은 실시간 데이터 저장을보고 다음날 아침도 일반 보관, 전날 밤에 이상한 문제를 여러 번 MySQL 데이터베이스, 기록 데이터를 발생, 히스토리 데이터는 저장되지 않습니다. 오랫동안 나는 문제를 찾지 못했습니다. 나중에주의 생각은, 히스토리 데이터 세트의 변화는 저장된 데이터는 긴 MySQL의 연결의 결과로, 데이터베이스에 데이터를 쓰지 자동으로 연결 해제하지 않는 한, 동일하지 않습니다. 그런 다음 비트 길이 MySQL의 유효 유휴 연결 8 시간 말을 살펴 자동으로 연결됩니다 바이두. 아, 조금 느낌, 그것이 있어야는 이유입니다.

둘째, 문제 해결

MySQL의보기에서 볼 수있는 정보에 따라 유효 기간은 각각 유휴 연결을 설정할 수 있습니다, 두 개의 매개 변수를 가지고 interactive_timeoutwait_timeoutMySQL의 설정 파일로 제공 될 수있다. 이에 따라, 조사가 수행 될 수있다.

  1. 사용 show variables like '%timeout%';위의 두 매개 변수의 값을 조회하는 명령을, 검사가 28800 (초, 단 8 시간)입니다.
  2. MySQL은 구성 파일을 수정 interactive_timeout하고 wait_timeout그래서 자동으로 폐쇄하여 연결된 사용하지 않고, 100 초 100이다.
  3. MySQL은 데이터베이스, 중간 일시 정지 삼분 (유휴 연결이 해제되었는지 확인하기 위해), 당신이 사용할 수에 데이터를 삽입하기 시작하는 서비스를 다시 시작 show status like 'Threads%'연결의 현재 수를 볼 수 명령을 쿼리 결과는 Threads_connected현재 연결의 수입니다.
  4. 정말 재현 성공적으로 저장 문제에 데이터를 보이지 않았다 및 이유를 알아, MySQL의에 데이터를 삽입 계속합니다.

셋째, 문제를 해결하기 위해

  1. 코드 데이터 저장 부, 분리 할 다시 연결이있는 코드 만 연결이 문제가 유효한 부분 기록이다 심사 위원을 참조에 확인이없는 mysql_query반환 값, 데이터는 경우에는 장애 로그 저장되지 않습니다.
  2. 끊어진을 다시 자동 코드를 수정 확인 mysql_query로그 및 각 데이터베이스 연산 결과가 기록되어 있도록 반환 값을 발생시킨다. 참고 : MySQL의 C / C ++ API가  mysql_query성공적인 작동을 위해 0을 반환, 비 - 제로 운영에 실패했습니다.

추천

출처www.cnblogs.com/yaohuimo/p/11525321.html