최근 MySQL DB에서 data source rejected establishment of connection, message from server: "too many connections" 이라는 에러가 발생한 적 있다.
잘 되다가 갑자기 이런 에러가 떠서(코드나 DB 설정 등을 수정한 적도 없고, 개발자 여러 명이 어플리케이션 실행을 시킨 상황도 아닌 것으로 파악되는데,,) 당황스러웠지만 우선 에러를 직독직해 하면 알 수 있듯 Connection 문제라고 하니 연결된 Connection 수 먼저 체크했다.
정리해보자면 이 에러는 DB와 연결된 client의 수, 다른 말로는 DB와 연결된 접속 수가 너무 많아서 발생한 에러인데, 또 다시 같은 에러가 발생할 수 있으므로 DB에 최대한으로 접속 가능한 수와, 현재 접속 수, 동시 사용 최대 접속 수, 현재 실행되고 있는 접속 수를 확인하는 쿼리를 기록해둔다.
나는 아래의 쿼리를 MySQL에서 직접 입력해 사용했다.
최대 접속 가능한 커넥션 수(max_connections)
SHOW VARIABLES LIKE 'max_connections';
현재 최대 접속 가능한 커넥션 수는 151개이다.
참고로 MySQL에서 max_connections의 기본값은 151개이다.
현재 접속 중인 커넥션 수(Threads_connected)
MySQL에 접속(connected)되어 있다는 것은 각각에 대해 Thread가 실행되고 있는 것이다. 따라서 연결된 Thread 수가 바로 커넥션 수에 해당한다.
SHOW STATUS LIKE 'Threads_connected';
현재 접속 중인 Client 수는 66개이다.
만약 Thread_connected가 151개를 넘어가게 되면 "too many connections" 에러가 발생한다.
동시 사용 최대 커넥션 수(Max_used_connections)
SHOW STATUS LIKE 'Max_used_connections';
동시에 사용된 접속 최대 수이다.
151개의 커넥션 중 최대 135개까지 사용되었었다.
실행되고 있는 Thread 수(Threads_running)
SHOW STATUS LIKE 'Threads_running';
sleeping 상태가 아닌 실행되고 있는 Thread 수이다.
'DataBase' 카테고리의 다른 글
[MSSQL] DB Connection Pool 조회 및 연결된 세션 정보 조회 쿼리 (0) | 2024.02.21 |
---|---|
[MySQL] MySQL 외부 접속 Connection Locked 에러 해결 (0) | 2024.01.22 |
[DB] SELECT Query 실행 순서 (0) | 2023.08.20 |
[MySQL] 형변환 CAST 함수 / CONVERT 함수 사용 방법 (0) | 2023.04.18 |
[MongoDB] Windows10 MongoDB 설치 (0) | 2022.12.02 |