MySQL 및 관련 시간 초과에 대한 자세한 분석

小云云
풀어 주다: 2017-12-22 13:27:45
원래의
1687명이 탐색했습니다.

mysql 라이브러리를 쿼리할 때 데이터 양이 상대적으로 많을 경우 항상 세션이 중단됩니다. 처음에는 mysql 및 연결 관련 타임아웃 문제인 줄 알았으나, 알고 보니 네트워크 불안정의 원인이었습니다. 이번 글은 주로 MySQL과 연결 관련 타임아웃에 대한 자세한 내용을 소개하고 있습니다. 필요한 친구들이 참고하시면 도움이 될 것 같습니다.

다음은 연결과 관련된 시간 초과를 요약한 것입니다.

slave-net-timeout

슬레이브가 연결이 끊어졌다고 간주하고 읽기를 중단하고 시도하기 전에 마스터로부터 추가 데이터를 기다리는 시간(초)입니다. 재시도 간격은 CHANGE MASTER TO 문의 MASTER_CONNECT_RETRY 옵션에 의해 제어되며, 재연결 시도 횟수는 --master-retry-count 옵션에 의해 제한됩니다. 는 3600초(1시간)입니다.
슬레이브는 마스터와의 연결에 문제가 있다고 판단하면 N초를 기다린 후 마스터와의 연결을 끊었다가 다시 연결합니다

net_read_timeout:

초 단위 읽기를 중단하기 전에 연결에서 더 많은 데이터를 기다리는 경우, net_read_timeout은 중단 시기를 제어하는 ​​시간 초과 값입니다. 읽기를 중단하기 전에 연결에서 데이터를 얻기 위해 기다려야 하는 시간(초)입니다. 서버가 클라이언트에서 읽는 중이면 net_read_timeout은 중단 시기를 제어하는 ​​시간 초과 값입니다. 데이터를 읽을 때 net_read_timeout은 시간 초과 시기를 제어합니다.

net_write_timeout:

서버가 쓰기를 중단하기 전에 블록이 연결에 기록될 때까지 기다리는 시간(초)입니다. net_write_timeout은 중단 시기를 제어하는 ​​시간 초과 값입니다.

쓰기를 종료하기 전에 연결에 블록 쓰기를 기다리는 시간(초), 서비스가 클라이언트에 데이터를 쓸 때 net_write_timeout은 시간 초과 시기를 제어합니다.

wait_timeout

서버가 활동을 기다리는 시간(초)

서버에 의해 강제로 종료될 때까지 서버와의 상호작용 없이 연결을 기다리는 시간

interactive_timeout:

서버가 대화형 연결에서 활동을 기다리는 시간(초)

서버에 의해 강제로 종료될 때까지 서버와 상호 작용 없이 연결하는 데 걸리는 시간

connect_timeout

mysqld 서버가 응답하기 전에 연결 패킷을 기다리는 시간(초) 잘못된 핸드셰이크입니다. 기본값은 10초입니다.


연결 응답을 기다리는 시간


connect_timeout: 연결 획득 단계(인증)에서 작동합니다.

interactive_timeout 및 wait_timeout: 연결에서 작동합니다. 유휴 단계(sleep)

net_read_timeout 및 net_write_timeout : 연결(쿼리)의 사용 단계에서 작동합니다.

MySQL 연결을 얻는 것은 사용자 이름과 비밀번호의 일치 확인 외에도 IP->HOST->DNS->IP 확인으로 인해 스레드 차단이 발생할 수 있습니다. 네트워크 문제. 스레드가 불필요한 확인 대기를 낭비하는 것을 방지하기 위해 connect_timeout을 초과하는 연결 요청은 거부됩니다.


네트워크 문제가 없더라도 클라이언트가 항상 연결을 점유하도록 허용할 수는 없습니다. wait_timeout(또는 client_interactive 플래그에 따라 Interactive_timeout)보다 오랫동안 절전 상태를 유지하는 클라이언트의 경우 MySQL은 적극적으로 연결을 끊습니다.


연결이 절전 상태가 아니더라도, 즉 클라이언트가 데이터를 계산하거나 저장하느라 바쁘더라도 MySQL은 조건부 대기를 선택합니다. 데이터 패킷을 배포하는 동안 클라이언트가 응답하기에 너무 늦을 수 있습니다(데이터 패킷 전송, 수신 또는 처리 속도가 너무 느림). 연결이 끝없는 대기로 낭비되지 않도록 하기 위해 MySQL은 조건에 따라 연결을 적극적으로 끊도록 선택합니다(net_read_timeout 및 net_write_timeout).


관련 권장사항:


JavaScript의 setTimeout 단일 스레드

js 함수 실행 프로세스를 확인하기 위한 setTimeout 설명 예시

js의 setTimeout() 함수

위 내용은 MySQL 및 관련 시간 초과에 대한 자세한 분석의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
최신 이슈
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿
회사 소개 부인 성명 Sitemap
PHP 중국어 웹사이트:공공복지 온라인 PHP 교육,PHP 학습자의 빠른 성장을 도와주세요!