반응형

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




반응형

+ Recent posts