[MySQL] Thread 모니터링 및 튜닝

MySQL Thread 접속방법과 아키텍쳐와 관련이  있습니다. MySQL 스레드 방식의 아키텍쳐를 가지고 있습니다.

유저가 접속하게 되면 Thread 할당이 되고 유저가 접속을 종료하면 할당했던 스레드를 회수하게 됩니다.

이때 스레드를 할당하고 회수하는 작업이 MySQL 성능에 영향을 많이 미치게 됩니다. 특히 사용량이 많은 시스템에서는 스레드 작업이

부담스러울 정도로 영향을 많이 받게 됩니다. 접속 스레드에 대한 모니터링 방법 튜닝 방법을 알아보겠습니다.

 

■ Global Status 확인

MySQL Client에서 다음과 같이 확인을 합니다.

mysql> show global status like '%Threads%';

그러면 다음과 같은 시스템 상태의 변수들이 나옵니다.

mysql> show global status like '%Threads%';
+------------------------+-------+
| Variable_name          | Value |
+------------------------+-------+
| Threads_cached         | 0     |
| Threads_connected      | 4     |
| Threads_created        | 4     |
| Threads_running        | 2     |
+------------------------+-------+

 

변수들의 특징에 대해 알아보겠습니다.

• Threads_cached

스레드 캐시의 스레드 입니다. 현재값입니다.

 

• Threads_connected

사용자가 연결되어 있는 사용자 수입니다. 현재값입니다.

 

• Threads_created

연결을 처리하기 위해 만들어진 스레드 입니다. 현재값입니다.

 

• Threads_running

Sleep 상태가 아닌 실행히 되고 있는 스레드 수입니다. 현재값입니다.

 

 

성능 튜닝 방법

• Threads_created 변수

해당 값이 빠르게 증가하는 경우 thread_cache_size 값을 증가시킬 필요가 있습니다.

thread_cache_size conenction pool 비슷한 개념으로 Connection 미리 만들어 놓아 사용자가 접속 시도시 Thread 만들지 않고

만들어져 있는 스레드를 사용자에게 할당하는 것입니다.

이렇게 하면 사용자 접속을 위해 스레드를 만들어야 하는 부하를 감소시켜 성능에 장점이 생기게 됩니다.

 

• cache miss ratio

cache miss ratio Threads_created / Connections * 100 으로 계산할 있습니다.

가능하면 cache miss ratio 낮으면 좋습니다. 그러나 문제가 있습니다.

비율을 낮추려면 thread_cache_size 시스템 변수를 늘려야 하지만 값을 늘리면 늘린만큼 시스템에 메모리를 사용하게 됩니다.

반대로 너무 낮으면 thread 계속 만들어야 하기 때문에 시스템에 추가적인 부하가 들어가게 됩니다.

 

Cache Miss Rate(%) 가 높다면 thread_cache_size를 기본값인 8 보다 높게 설정하는 것이 좋습니다. 일반적으로 threads_connected 가 Peak-time 시 보다 약간 낮은 수치로 설정하는 것이 좋습니다.

가능하면 Threads_connected 수가 100에서 120 사이인 경우 캐시 크기를 20정도로 설정하고 500에서 700사이에 머문다면 thread_cache_size 200정도로 설정합니다

 

 

※도움이 되셨다면 광고클릭 한번 부탁드립니다.※

Designed by JB FACTORY