-
현재 운영하고 있는 DB(MySQL) 커넥션 수 확인하기실무에서 알게된 내용 2022. 6. 3. 08:39
대상 DB : Writer DB
- 상황 : 담당하고 있는 서비스를 사내 배포 환경으로 전환하면서 새로운 인스턴스에다가 배포를 진행했다. 그리고 나서 기존 ALB에서 기존 인스턴스를 detach 함과 동시에 금일 배포한 새로운 인스턴스를 바라보도록 스위칭 작업을 했다. 기존 인스턴스들은 만약에 상황을 대비해서 며칠간 살려두기로 결정했다. 이로 인해, DB 커넥션 수가 얼마나 증가했는지 확인하고 싶었다.
- 확인 : 전반적으로 DB 커넥션 수가 증가함을 확인함
- 추가 궁금했던 사항
- DB는 커넥션 수를 최대 얼마나 허용하고 있을까?
- 커넥션 풀 maximum 사이즈는 얼마로 돼 있을까?
1. DB는 커넥션 수를 최대 얼마나 허용하고 있을까?
- 최대 허용하는 커넥션 수 확인
SHOW VARIABLES LIKE '%max_connection%';
내가 담당하고 있는 서비스의 DB는 최대 3,000개의 커넥션을 허용한다.
(max_connection 수는 보통 DBA 분이 DB 인스턴스 타입 보고 결정한다. 따라서, DBA 분들이 현재 상황에 맞게 커넥션 수를 결정했을 텐데, DB 커넥션 수가 올라가는 경우가 생긴다면 DBA 분께 공유를 드려야 한다.)
2. 동시에 최대 접속(커넥션)했던 수 확인
SHOW STATUS LIKE 'Max_used_connections';
내가 담당하고 있는 서비스의 DB는 동시에 최대 480명이 접속했었다.
3. 현재 접속자 수(사용하고 있는 커넥션 수) 확인
SHOW STATUS LIKE 'Threads_connected';
내가 담당하고 있는 서비스의 DB에 현재 311명이 커넥션을 사용하고 있었다.
2. 커넥션 풀 maximum 사이즈는 얼마로 돼 있을까?
- SpringBoot 애플리케이션
maximumPoolSize: 30
(Worker 4대 + API 3대 + Admin 1대) * 30 = 240
- Node.js 애플리케이션
pool_size = 10
(A서비스용 API 10대 + B서비스용 API 4대 + 파일 업로드 10대 + 특정 서비스용 3대) * 10 = 270
참고 자료
'실무에서 알게된 내용' 카테고리의 다른 글
컬럼 값을 Collection으로 받을 때 Querydsl 이슈 (0) 2022.06.21 Grafana loki에서 에러 로그 하나가 검색이 안 됐던 이슈 (0) 2022.06.14 시스템 별로 Feign Client readTimeout 설정 때문에 내부 동작 코드 분석 (0) 2022.06.14 Spring Kafka 적용하며 발생했었던 이슈 정리 (0) 2022.06.02 Redis를 이용한 동시성 제어 (0) 2022.05.19