문제의 원인
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를 통해 구동 중이라면,
- /etc/my.cnf 파일을 외부 volume 으로 추가한 후,
- 해당 파일의 권한을 필히 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/