본문 바로가기
backend/mysql

[Hoon] MySQL - Too many connections 해결 및 튜닝

by 플로거 2019. 1. 8.

MySQL - Too many connections 해결 및 튜닝

MySql 이나 Mariadb 를 운용할때 종종 만나게 되는 too many connections 의 해결과 성능 튜닝에 대해서 알아보자.

 

# 상태 확인

show variables like '%max_connections%'; 

show status like '%connect%';

"Aborted_connects" "53" - MySQL 서버에 접속이 실패된 수
"Connections" "10832"
"Max_used_connections" "101" - 최대로 동시에 접속한 수
"Threads_connected" "100" - Thread Cache의 Thread 수

 

show status like 'Aborted%';

"Aborted_clients" "5000" - 클라이언트 프로그램이 비 정상적으로 종료된 수
"Aborted_connects" "53" - MySQL 서버에 접속이 실패된 수

 

show status like '%thread%';

"Threads_cached" "5" - Thread Cache의 Thread 수
"Threads_connected" "99" - 현재 연결된 Thread 수
"Threads_created" "1469" - 접속을 위해 생성된 Thread 수
"Threads_running" "1" - Sleeping 되어 있지 않은 Thread 수

 

# 문제해결 및 튜닝

Cache Miss Rate(%) = Threadscreated / Connections * 100
Connection Miss Rate(%) = Abortedconnects / Connections * 100
Connection Usage(%) = Threads_connected / max_connections * 100

  • Connection Usage(%)가 100% 라면 max_connections 수를 증가시켜 주십시요.
  • Connection 수가 부족할 경우 ==> Too Many Connection 에러 ==> max_connections 를 올려줌
  • DB 서버의 접속이 많은 경우는 wait_timeout 을 최대한 적게 (30 정도를 추천) 설정하여 불필요한 연결을 빨리 정리필요.  그러나 Connection Miss Rate(%) 가 1% 이상이 된다면 wait_timeout 을 좀 더 길게 가져야 함.
  • Cache Miss Rate(%) 가 높다면 thread_cache_size를 기본값인 8 보다 높게 설정하는 것이 좋음.
  • 일반적으로 threads_connected 가 Peak-time 시 보다 약간 낮은 수치로 설정함.

# 참고

MySQL 서버는 외부로 부터 접속 요청을 받을 경우 인증을 위해 IP 주소를 호스트네임으로 바꾸는 과정을 수행하여
접속시에 불필요한 부하 발생.

my.cnf에서 skip-name-resolve를 설정, 접속시 IP 기반으로 접속을 하게 되면 hostname lookup 과정 생략되어 좀 더 빠르게 접속 가능

[권한필요 - root]

set global max_connections = 500; 

set wait_timeout = 30;

[vi /etc/my.cnf]

skip-name-resolve

bit.ly/3fXOzon

 

인프런 인강 선착순 30%(7,700원) 마지막 할인 쿠폰 - Vue.js 핵심 강의!

강좌명 - [Vue.js 입문] Javascript Real 웹앱 개발 - 1부 : vue 개념 ~ 핵심 실습 인프런 인터넷 강의 선착순 100명 30% 할인쿠폰! (7,700원으로 수강) 강의 수강평도 부탁드립니다. bit.ly/2TtRHis [Vue.js 입문..

plogger.tistory.com

 

bit.ly/2TtRHis

 

[Vue.js 입문] 초보 실전 웹앱 개발 - 1부 : vue 개념 ~ 핵심 문법 - 인프런

이 강의를 수강하시면 Vue.js 와 관련된 기본적인 개념부터 Real 웹앱 개발을 해 볼 수 있습니다. 이 강의는 1부 기본기 이며, 2부와 3부를 통해서 실제 Real 웹앱을 구현해 보도록 하겠습니다. 초급 ��

www.inflearn.com

 

'backend > mysql' 카테고리의 다른 글

[Hoon] MySql 에서의 현재시각 sysdate vs now  (0) 2013.05.03

댓글