[MySQL][Parameter] back_log

MySQL 서버 변수중 back_log라는 시스템 변수가 있습니다.

이 변수는 MySQL 커넥션 성능과 굉장히 밀접한 관련이 있는데 OS 커널파라미터중 네트워크와 밀접한 관련이 있습니다.

이 시스템 변수에 대해 알아보겠습니다.

 

■ 서버 변수 back_log에 대한 설명

MySQL이 가질 수 있는 미해결 연결 요청 수 입니다. MySQL 스레드가 매우 짧은 시간에 매우 많은 연결 요청을 받을 때 작동합니다.

그런 다음 메인 스레드가 연결을 확인하고 새 스레드를 시작하는 데 약간의 시간(아주 짧지만)이 걸립니다.

back_log 값은 MySQL이 일시적으로 새 요청에 대한 응답을 중지하기 전에 이 짧은 시간 동안 쌓일 수 있는 요청 수를 나타냅니다.

단기간에 많은 수의 연결이 예상되는 경우에만 이 값을 늘려야 합니다.

 

즉, 이 값은 들어오는 TCP/IP 연결에 대한 듣기(listen) 대기열의 크기입니다. 운영 체제에는 이 대기열의 크기에 대한 자체 제한이 있습니다.

Unix listen() 시스템 호출에 대한 매뉴얼 페이지에 자세한 내용이 있습니다. 이 변수의 최대값은 OS 설명서를 확인하십시오. back_log는 운영 체제 제한보다 높게 설정할 수 없습니다.

 

기본값은 max_connections 값으로, 허용된 백로그가 최대 허용 연결 수로 조정되도록 합니다.

 

■ 관련 OS 파라미터

그렇다면 OS 파라미터의 어떤 내용과 관련이 있는지 살펴보겠습니다. OS 커널 파라미터중 당연히 네트워크와 관련이 깊습니다.

관련 파라미터들을 한번 확인해보겠습니다.

 

▶︎ somaxconn

client 의 연결 요청은 accept() 를 호출하기 전에 queue 에 쌓이게 됩니다. queue 가 작으면 client 의 연결 요청이 drop 될 수 있으므로 다음 항목을 크게 설정해 주어야 합니다.

• sysctl.conf

net.core.somaxconn = 65535

기본 설정값은 128 입니다.

 

▶︎ tcp_max_syn_backlog

TCP 의 three way hand shaking 시 서버가 SYN 을 받으면 상태를 SYN_RECV 로 변경하며 queue 에 저장합니다.  tcp_max_syn_backlog 는 이 패킷을 쌓아두는 queue 의 크기로 너무 작으면 Syn flooding 공격등에 취약할 수 있고 동시에 client 가 연결을 시도할 경우 문제가 될수 있으므로 키워줍니다.

net.ipv4.tcp_max_syn_backlog = 30000

 

 

▶︎ tcp_syncookies

Syn cookies 가 설정되어 있으면 동일 client 에서 새로운 SYN 패킷을 받아도 syn backlog 큐에 쌓지 않습니다.

net.ipv4.tcp_syncookies = 1

 

 

▶︎ netdev_max_backlog

NIC(Network Interface Card) 에서 패킷이 들어오면 커널은 처리하기 전에 ring buffer 라는 큐에 쌓아 놓습니다. 이 값이 작을 경우 패킷이 dorp 될수 있으므로 적당한 값으로 키워줍니다.

net.core.netdev_max_backlog = 5000

 

이 파라미터들 중에서 중요하게 봐야 할 파라미터는 somaxconn, tcp_max_syn_backlog 이 2개 입니다.

이 두가지가 MySQL back_log파라미터와 관련이 깊으며 켜넥션에 관련된 튜닝이 필요하다면 조절을 해보시는것을 추천드립니다.

 

 

■ 파라미터 정보

설명 값
커맨드 라인 명령어 정보 --back-log=#
시스템 변수 back_log
범위 Global
동적여부 N
SET_VAR. 힌트 적용 여부 : No No
형식 Integer
기본값 -1 (자동크가. 리터럴값에 할당하면 안됩니다.)
최소값 1
최대값 65535

 

■ 참고 URL

https://www.lesstif.com/lpt/linux-kernel-tuning-for-network-server-87949594.html

https://m.blog.naver.com/sory1008/220233937447

Designed by JB FACTORY