#kimtheho
MariaDB(또는 MySQL) 자체는 내장된 "Connection Pool" 시스템을 가지고 있지 않으며, 클라이언트의 요청당 하나의 스레드를 할당하는 Thread Pool 모델을 사용한다.
현재 연결 및 스레드 상태 확인 (SHOW STATUS)
| SHOW STATUS LIKE 'Threads_%'; |
- Threads_cached: 스레드 캐시(풀)에 저장되어 재사용을 대기 중인 스레드 수.
- Threads_connected: 현재 열려 있는 총 연결(Connection) 수.
- Threads_created: 연결을 위해 새로 생성된 스레드 수. 이 값이 너무 빠르게 증가한다면 스레드 캐시 설정(thread_cache_size)을 늘려야 한다.
- Threads_running: 현재 쿼리를 실행 중인(대기 상태가 아닌) 활성 스레드 수이다.
서버의 스레드 설정 확인 (SHOW VARIABLES)
MariaDB가 연결을 관리하기 위해 내부에 설정해 둔 스레드 풀 관련 변수들을 확인한다.
| SHOW VARIABLES LIKE '%thread%'; |
- thread_handling: one-thread-per-connection(기본값) 또는 pool-of-threads(MariaDB Enterprise/특수 설정 시 스레드 풀 사용)인지 확인한다.
- thread_cache_size: 종료된 연결의 스레드를 버리지 않고 캐시에 보관할 최대 개수다. 애플리케이션의 Connection Pool 최소/최대 값과 맞춰주면 효율적이다.
- max_connections: MariaDB가 허용하는 최대 동시 연결 수다. 애플리케이션의 Max Pool Size가 이 값보다 작아야 Too many connections 에러를 방지할 수 있다.
현재 연결된 클라이언트 세부 정보 확인 (SHOW PROCESSLIST)
현재 어떤 클라이언트(애플리케이션)가 연결을 잡고 있고, 어떤 상태(Sleep 또는 Query 실행 중)인지 직관적으로 볼 수 있다.
Command 열이 Sleep으로 되어 있는 것들은 애플리케이션의 Connection Pool이 재사용을 위해 연결을 유지하고 있는 상태(유휴 연결)를 의미한다.
카페 게시글
RDBMS
Mariadb Connection Pool
운영자
추천 0
조회 5
26.07.01 09:17
댓글 0
다음검색