Too many connection 에러 처리 방법

문제의 원인

MySQL(MariaDB) 의 기본 Connection 개수 설정을 초과하여 연결을 요청하여 발생함

현재 상태 확인

Max connections 확인

max_connections : 연결을 지속할 수 있는 최대 연결 제한량

mysql> show variables like ‘%max_connection%’;

 

Wait timeout 확인

wait_timeout : 다음 쿼리를 실행할 때 까지 해당 설정으로 지정된 시간 동안 연결을 끊지 않고 대기함

mysql> show variables like ‘wait_timeout’;

 

수정 방법

my.cnf 파일 수정을 통한 수정 방법

/etc/my.cnf 파일에 다음 구문을 추가함

 

[mysqld]

max_connections = 1024
wait_timeout = 60

 

mysql 접속을 통한 설정

mysql> set global max_connections = 1024;

mysql> set wait_timeout = 60;

 

Docker 상의 수정

Docker – Container를 통해 구동 중이라면,

  1. /etc/my.cnf 파일을 외부 volume 으로 추가한 후,
  2. 해당 파일의 권한을 필히 755로 설정해 주어야 함, 그렇지 않으면, mysql이 해당 설정을 무시하게 됨.

/etc/my.cnf 기본 설정 파일

 

# For advice on how to change settings please see
# http://dev.mysql.com/doc/refman/9.0/en/server-configuration-defaults.html

[mysqld]
#
# Remove leading # and set to the amount of RAM for the most important data
# cache in MySQL. Start at 70% of total RAM for dedicated server, else 10%.
# innodb_buffer_pool_size = 128M
#ee
# Remove leading # to turn on a very important data integrity option: logging
# changes to the binary log between backups.
# log_bin
#
# Remove leading # to set options mainly useful for reporting servers.
# The server defaults are faster for transactions and fast SELECTs.
# Adjust sizes as needed, experiment to find the optimal values.
# join_buffer_size = 128M
# sort_buffer_size = 2M
# read_rnd_buffer_size = 2M

host-cache-size=0
skip-name-resolve
datadir=/var/lib/mysql
socket=/var/run/mysqld/mysqld.sock
secure-file-priv=/var/lib/mysql-files
user=mysql

pid-file=/var/run/mysqld/mysqld.pid
[client]

socket=/var/run/mysqld/mysqld.sock

!includedir /etc/mysql/conf.d/

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다