목차

MySQL Max Connection 설정

어플리케이션 운영중 Too many connection의 에러가 발생하는 경우 보통 어플리케이션에서 커넥션 제어를 제대로 하지 못하거나 사용량이 많아 디비연결을 위한 커넥션이 모두 사용되어 더이상 커넥션을 맺을수 없는경우 발생한다.

해결방법은 어플리케이션 개발시 커넥션 관리를 좀더 명확하게 만들어야 하는데 이게 불가능할경우 MySQL 에서 최대 커넥션수를 늘려주도록 한다.

확인

현재 MySQL의 최대 연결 가능한 커넥션 수를 확인한다. 보통 아무런 설정을 하지 않은경우 기본값은 151로 나올것이다.

mysql> show variables like 'max_connections';
+-----------------+-------+
| Variable_name   | Value |
+-----------------+-------+
| max_connections | 151   |
+-----------------+-------+
1 row in set (0.00 sec)

DB운영중 최대 사용된 커넥션 수를 확인해본다.

mysql> show status like '%used_connection%';
+---------------------------+---------------------+
| Variable_name             | Value               |
+---------------------------+---------------------+
| Max_used_connections      | 152                 |
| Max_used_connections_time | 2018-12-11 11:53:11 |
+---------------------------+---------------------+
2 rows in set (0.00 sec)

12월 11일 오전 11시 53분경에 최대 사용커넥션 수가 152개로 초과발생한것을 확인할 수 있다.

mysql> show status like 'Aborted%';
+------------------+-------+
| Variable_name    | Value |
+------------------+-------+
| Aborted_clients  | 4     |
| Aborted_connects | 1     |
+------------------+-------+
2 rows in set (0.00 sec)

초과된 커넥션으로 인해 클라이언트 차단은 4회, 커넥션 차단은 1회 발생한것을 알 수 있다.

적용

운영중인 DB라면 재기동이 불가능하거나 할때 실시간으로 최대 커넥션 수를 변경해줄수 있다.

mysql> set global max_connections=500;
Query OK, 0 rows affected (0.00 sec)

영구적으로 적용하려면 /etc/my.cnf 파일에 추가하도록 한다.

[mysqld]
max_connections = 500

참조

출처