본문 바로가기
DB

MySQL ‘Too many connections’ 오류 해결 방법

by 티끌코딩 2025. 2. 26.
반응형

 

 

MySQL에서 Too many connections 오류가 발생하면 데이터베이스에 접속할 수 없게 됩니다. 이는 서버의 동시 접속 가능 사용자 수가 최대치를 초과했을 때 발생하는 오류입니다.

1. 오류 원인

MySQL은 동시 접속 가능한 최대 클라이언트 수를 제한합니다. 기본적으로 이 값은 max_connections 설정 값에 의해 결정됩니다.

  • 기본값은 151개 (MySQL 5.7 이상)
  • 너무 많은 동시 연결 요청이 발생하면 새로운 연결이 차단됨
  • 불필요한 연결이 유지되면서 리소스 낭비

2. 현재 최대 연결 수 확인

현재 MySQL의 최대 연결 수를 확인하려면 아래 명령어를 실행하세요.

SHOW VARIABLES LIKE 'max_connections';

또한 현재 연결된 세션 수도 확인할 수 있습니다.

SHOW STATUS LIKE 'Threads_connected';

3. max_connections 값 증가

기본값이 너무 낮다면 max_connections 값을 증가시켜 해결할 수 있습니다. 설정을 변경하려면 아래 명령어를 실행하세요.

SET GLOBAL max_connections = 500;

이렇게 하면 일시적으로 설정이 변경되지만, MySQL을 재시작하면 초기화됩니다. 영구적으로 변경하려면 MySQL 설정 파일(my.cnf 또는 my.ini)을 수정해야 합니다.

설정 파일 수정 예시:

[mysqld]
max_connections = 500

파일을 수정한 후 MySQL을 재시작하세요.

sudo systemctl restart mysql

4. 불필요한 연결 종료

MySQL이 너무 많은 연결을 유지하고 있다면, 불필요한 세션을 종료하여 문제를 해결할 수 있습니다.

SHOW PROCESSLIST;

이 명령어를 실행하면 현재 실행 중인 쿼리를 확인할 수 있으며, 불필요한 세션을 종료하려면 다음 명령어를 사용하세요.

KILL [PROCESS_ID];

5. 연결 풀(Connection Pool) 사용

애플리케이션에서 데이터베이스 연결을 효율적으로 관리하기 위해 연결 풀 (Connection Pool)을 사용하는 것이 좋습니다.

예를 들어, MySQL Connector 또는 HikariCP와 같은 라이브러리를 활용하면 연결을 효율적으로 관리하여 성능을 개선할 수 있습니다.

6. 기타 성능 최적화

  • 자주 사용되는 쿼리는 캐싱하여 불필요한 연결을 줄임
  • 트랜잭션이 필요 없는 경우 autocommit 활성화
  • MySQL 서버의 메모리 설정(innodb_buffer_pool_size) 조정

결론

Too many connections 오류는 MySQL의 동시 연결 수 제한으로 인해 발생합니다. 이 문제를 해결하려면 max_connections 값을 증가시키거나, 불필요한 연결을 종료하고, 연결 풀을 사용하는 등의 최적화 작업이 필요합니다.

이 가이드를 참고하여 MySQL 서버의 성능을 개선해보세요!

반응형