MySQL/MariaDB Connection 모니터링
- Version : MySQL 5.7.21, Ubuntu 16.0.4
MySQL 서버에서 connection 모니터링 하는 방법에 대해서 알아본다. MySQL 뿐만 아니라 다른 데이터베이스에서도 connections의 수는 운영과 성능면에서 매우 중요하다. 특히 connection의 개수가 max_connections 값을 초과할 경우 새로운 connection이 할당되지 못하여 어플리케이션이 MySQL 서버에 연결되지 않아 오류가 발생할수 있다. 또한 신규 connection이 할당 될때, 그에 따른 메모리 할당 및 기타 작업이 동반되기 때문에 빈번한 connection 연결 및 해제는 여러가지 성능 문제와도 관련이 있다.
MySQL에서 connection에 대한 모니터링을 하려면 전역 시스템 변수 및 전역 상태 변수를 함께 살펴보아야 한다. 아래 스크립트를 실행하면connection과 관련된전역 변수의 설정값을 확인 할 수 있다.
show variables where variable_name in ( 'max_connections', 'max_user_connections' ) |
Variable Name |
Comment |
Max_connections |
현재 설정된 최대 동시 연결 수 |
Max_user_connections |
계정당 생성할 수 있는 최대 동시 연결 수 |
아래 스크립트는 젼역 상태 변수로 connection과 관련된 현재값을 확인 할 수 있다.
show status where variable_name in ( 'max_used_connections', 'aborted_clients', 'aborted_connects', 'threads_connected', 'connections' ); |
Variable Name |
Comment |
Max_used_connections |
동시 최대 접속자 수 |
Aborted_clients |
연결된 상태에서 강제로 연결 해제 된 연결 수 |
Aborted_connects |
연결 과정 중 fail된 연결 수 |
Threads_connected |
현재 오픈된 연결 수 |
connections |
연결 시도된 총 수 |
현재 사용중인 connection의 사용 비율은 아래와 같은 공식으로 확인 할 수 있다.
Connection Usage(%) = (Threads_conneted / max_connections) * 100 |
위에서 언급 하였듯이 연결된 커넥션의 수가 max_connections 값을 초과 할 경우 커넥션을 할당 받지 못해서 연결 오류가 발생한다. 커넥션 수가 증가하는 원인에는 정상적인 서비스 요청이 증가하여 커넥션이 증가할 수 있지만 일부 비효울 적인 쿼리로 인해 특정 세션에서 대기나 잠금이 발생하여 리소스가 대기할 경우 새로운 요청에 대해서는 새로운 커넥션이 할당되어 연결되므로 연결 수가 증가할 수 있다. 그래서 커넥션 수를 모니터링 할때 리소스에 대한 모니터링을 함꼐 해야 한다.
max_connection커넥션의 수를 변경할 때는 서비스에 필요한 최대 연결수 값 이상으로 설정해야 한다. OLTP 서버에서는 시간마다 요청수가 다르기 때문에 (서비스 요청이 몰리는 시간과 그렇지 않은 시간에 대한 커넥션 수 차이가 크다.) 최대한 서비스가 가장 바쁜 시간대의 값보다 크게 설정해야 한다.
아래 공식은 강제로 연결이 취소된 비율인데, 특정 세션에서 일정 시간이상동안 요청이 없다면 MySQL서버는 강제로 연결을 해제 한다. 이 비율이 높다면 wait_timeout 값의 조정이 필요 할 수 있다.
Aborted connection usage(%) = (aborted_clients / connections) * 100 |
[참고자료]
· https://dev.mysql.com/doc/refman/5.7/en/user-resources.html
· https://dev.mysql.com/doc/refman/5.5/en/too-many-connections.html
· https://www.percona.com/blog/2014/01/28/10-mysql-performance-tuning-settings-after-installation/
2018-04-05 / 강성욱 / http://sqlmvp.kr / http://sqlangeles.com
MySQL, connection, 커넥션 모니터링, max_connections, connection monitoring, DBA, MySQL 운영, aborted_cilent, max_user_connections, max_used_connections
'MySQL, MariaDB' 카테고리의 다른 글
Run the MySQL with Docker (0) | 2019.03.24 |
---|---|
MySQL/MariaDB Handler 모니터링 (0) | 2019.03.24 |
MySQL/MariaDB QPS(Query per second) 모니터링 (0) | 2019.03.24 |
MySQL/MariaDB Binlog Cache and Binlog Cache Size (0) | 2019.03.24 |
MySQL/MariaDB Memory 모니터링 (0) | 2019.03.24 |