Avatar
임호현
좋아요
댓글
[FAQ/MARIADB] Threadpool_threads와 Thread_runnning 상태 변수간 상관관계 문의

Question.

현재 DB서버는 Threadpool을 사용하고 있으며 모니터링을 위해 threadpool_threads, threads_running 등의 두개의 상태 변수를 로깅하고 있습니다.
threadpool_threads가 쓰레드풀 안에 생성되어있는 idle + running thread들을 다 합친 개수라고 생각했었는데로깅된걸 보면 threads_running이 더 높은값이 나올때가 있습니다.
왜 이런 현상이 발생하는 건가요?

 

Answer.

내용 참고 부탁드립니다.

https://mariadb.com/kb/en/thread-pool-system-status-variables/#threadpool_idle_threads

https://mariadb.com/kb/en/thread-pool-system-status-variables/#threadpool_threads

 

Threads_running은 Client와의 Connection Threads 중 Runnning 상태의 Connection Threads의 수를 나타 냅니다.


https://mariadb.com/kb/en/server-status-variables/#threads_running


따라서 Threads_running은 show processlist에서 sleep이 아닌 Connection Thread의 수를 나타내고 Threadpool_threads는 실제 스레드풀의 전체 Worker Threads 갯수를 나타내기 때문에 두 값을 비교하는 것은 크게 의미가 없습니다.
모니터링 하길 원하는 Threadpool내의 Active 상태의 Worker Thread는 아래와 같이 계산 가능하니 참고 부탁드립니다.


Active Worker Thread = Threadpool_threads - Threadpool_idle_thread