MySQL too many connections 오류 해결

too many connection mysql 디비 오류로 사이트 다운되어 그 해결 방법을 찾던 중 조치한 내용 정리.

쇼핑몰이 이 문제로 정상적으로 운영이 되지 않아서 해결 방법을 찾아본 것이다.

/etc/rc.d/rc.local
파일에

safe_mysqld -O max_connections=1000 -O table_cache=256 -O wait_timeout=300 &

설정 변경

기존에
max_connections이 100으로 되어 있기에 일단 늘려줌.
wait_timeout도 28800으로 너무 길어서 줄여줌.

그리고 서버 재부팅

shutdown -r now

이 방법이 효과가 있을 지는 모르겠으나 오늘 조치한 내용.

참고사이트 : http://www.superuser.co.kr/database/mysql/toomany/toomanyconnections.htm

이런 조치를 하게 된 배경 :

아침에 출근해서 사이트를 오픈하니 too many 오류로 다운이 되었다.

그래서 쇼핑몰 호스팅업체에 전화를 했더니 자기네들은 주5일제로 오늘 사무실에 없어서 바로 조치를 못해준다면서 재부팅을 하라고만 무책임하게 알려주었다.

원인파악해서 수정할 생각도 하지 않는 이런 XXX같은 놈들.

[이 게시물은 라이노님에 의해 2008-04-15 18:58:04 홈페이지관리에서 이동 됨]


최신 업데이트 (2026년 기준)

현재 권장하는 too many connections 오류 해결 방법

이 글에서 사용한 safe_mysqld 명령어는 현재 MySQL 버전에서는 더 이상 사용하지 않는다. 현재는 /etc/mysql/my.cnf 또는 /etc/my.cnf 설정 파일에서 직접 값을 수정하는 방식을 사용한다.

[mysqld]
max_connections = 500
wait_timeout = 300
interactive_timeout = 300

설정 변경 후 MySQL 서비스를 재시작하면 영구 적용된다.

단순히 max_connections만 늘린다고 완벽하게 해결되지 않는다.

Connection Usage(%)가 100%라면 max_connections 수를 늘리는 것이 좋고, Connection Miss Rate(%)가 1% 이상이라면 wait_timeout을 더 길게 가져가는 것이 좋다.

max_connections 값과 메모리의 관계

max_connections을 늘릴수록 RAM 사용량이 늘어나므로, 상황에 따라 max_connections를 늘리는 대신 timeout을 줄이는 방법을 택하는 것이 더 효율적일 수 있다.

서버 메모리 용량을 고려해 적정값을 설정하는 것이 중요하다.

클라우드 환경(RDS)에서의 설정 방법

현재는 AWS RDS, NCP, 카페24 클라우드 DB 등 관리형 데이터베이스 서비스를 사용하는 경우가 많다.

AWS Aurora MySQL 기준으로 max_connections 값을 변경하려면 사용자 지정 DB 인스턴스 파라미터 그룹을 생성하고 max_connections 파라미터 값을 더 크게 설정한다.

이 방법은 작동 중단 없이 적용할 수 있다.

커넥션 풀 관리의 중요성

이 글에서 겪은 것처럼 연결이 종료되지 않고 쌓이는 문제는 현재도 자주 발생한다.

PHP의 mysql_pconnect() 함수처럼 연결을 유지하는 방식보다, 사용 후 반드시 연결을 닫는 방식을 사용하거나 커넥션 풀(Connection Pool)을 도입해 연결 수를 효율적으로 관리하는 것이 근본적인 해결책이다.

댓글 남기기