MySQL

GreenBean·2023년 1월 20일
0
post-thumbnail

MySQL

Time out

  • mysqldtime out 설정은 크게 3가지
    • connect_timeout
      • bad handshake timeout
    • interactive_timeout
      • interactive 모드에서 connection time out
    • wait_timeout
      • none interactive 모드에서 connection time out

Tip! 추가 내용

  • mysqld 는 MySQL 서버

connect_timeout

  • 이 설정은 mysqldmysql client 가 연결 ( connection ) 을 맺기 위해서 mysqld연결 패킷을 기다리는 최대 시간
    • TCP 연결을 맺는 과정 ( 3-way handshake ) 에서 connect_timeout 동안에도 연결 패킷이 들어오지 않으면 연결이 실패되고 bad handshake 로 응답

Tip! 추가 내용

  • 연결 실패
    • 연결 과정중에서 fail 되는 경우
    • aborted_connects
  • 연결 취소
    • 연결이 된 상태에서 강제로 close 된 경우
    • aborted_clients
  • 정리하자면 mysqldmysql clientTCP 연결을 맺는 최대 시간으로 이 시간보다 큰 경우는 모두 aborted_connects 에 해당 ( 단위는 초 )
    • 연결 실패율 ( POF )
      • aborted_connects * 100 / connections
    • 연결이 실패되는 경우
      • 연결 패킷에 올바른 연결 정보가 없는 경우
      • 특정 user 가 권한이 없는 데이터베이스에 접근할 경우
      • mysqld 접근 password 가 틀린 경우
      • connect_timeout 보다 긴 연결 과정
    • 연결 실패율 ( POF ) 이 높은 경우는 대부분 권한이 없는 데이터베이스 연결이나 틀린 password 를 사용할 경우가 많음
  • 기본값은 대부분 5 ( ) 로 설정되어 있으며 따로 설정할 필요 없음
  • mysqld--warnings 옵션 사용과 xxx.err 파일에 기록됨

interactive_timeout

  • interactive 모드에서의 time out
    • interactive 모드는 mysql> 과 같은 프롬프트 있는 콘솔이나 터미널 모드를 말함
    • mysqldmysql client 가 연결을 맺은 후 다음 쿼리까지 기다리는 최대 시간을 의미
  • 설정된 interactive_timeout 까지도 아무런 요청 ( 쿼리 ) 이 없으면 연결은 취소되고 그 이후에 다시 요청이 들어오면 연결은 자동으로 맺어짐
    • interactive_timeout 안에 다시 요청이 들어오면 wait time0 으로 초기화됨
  • 기본 값은 28800 ( 8시간 ) 으로 설정되어 있는데 상당히 관대한 설정
    • 3600 ( 1시간 ) 정도로 설정하는 것을 권장

wait_timeout

  • 이 설정은 제일 중요한 파라미터 항목
    • interactive 모드가 아닌 경우에 해당되며 mysqldmysql client 가 연결을 맺은 후 다음 쿼리까지 기다리는 최대 시간을 의미
    • 즉 대부분 PHP 나 C ∙ PERL ∙ python 등의 API 를 이용한 클라이언트 프로그램 모드를 말함
  • interactive_timeout 과 마찬가지로 wait_timeout 까지 아무런 요청 ( 쿼리 ) 이 없으면 연결은 취소되고 그 결과는 aborted_clients 에 누계
    • wait_timeout 안에 다시 요청이 들어오면 wait time0 으로 초기화됨
  • 연결 취소율 ( POC )
    • aborted_clients * 100 / connections
  • 연결이 취소되는 경우 ( =강제 종료 )
    • 종료 ( exit ) 되기 전 mysql_close() 가 없는 경우
    • wait_timeout 이나 interactive_timeout 시간까지 아무런 요청 ( 쿼리 ) 이 없는 경우
  • 기본 값은 interactive_timeout 과 마찬가지로 28800 ( 8시간 ) 으로 설정되어 있는데 역시 관대한 설정
  • 앞에서 연결 취소율 ( POC ) 을 계산해 보면 MySQL 서버가 어느 정도 비율로 강제종료하는지 알 수 있음
    • 예를 들어 POC 가 1% 이라면 100개의 커넥션 당 하나 정도는 mysql_close() 없이 강제 종료 ( exit ) 되고 있다는 의미
    • 이 값이 0% 에 가까울수록 좋음
    • 이 의미는 클라이언트 프로그램에서 모두 정상적으로 종료했다는 의미
profile
🌱 Backend-Dev | hwaya2828@gmail.com

0개의 댓글