[컴][DB] MySQL stress test

MySQL benchmark tool , BMT / mysql optimization / mysql status query / db monitoring / db 모니터링 / 디비 모니터




MySQL 최적화

MySQL stress test

여러가지 tool 들이 있다.
  • mysql-stress-test.pl [ref. 1]
  • mysqlslap [ref. 2]
  • Sysbench [ref. 3]
  • super-smack[ref. 4]
  • mysqltuner[ref. 7]



max_connections 과 thread_cache_size[ref. 4]

현재 connection 상태를 알아보는 방법

mysql> show status like '%conn%';
+----------------------+-------+
| Variable_name        | Value |
+----------------------+-------+
| Aborted_connects     | 0     |
| Connections          | 8611  |
| Max_used_connections | 396   |
| Threads_connected    | 1     |
+----------------------+-------+

mysql> show status like '%thr%';
+------------------------------------------+-------+
| Variable_name                            | Value |
+------------------------------------------+-------+
| Delayed_insert_threads                   | 0     |
| Performance_schema_thread_classes_lost   | 0     |
| Performance_schema_thread_instances_lost | 0     |
| Slow_launch_threads                      | 0     |
| Threads_cached                           | 7     |
| Threads_connected                        | 1     |
| Threads_created                          | 5575  |
| Threads_running                          | 1     |
+------------------------------------------+-------+

새로운 thread가 생성되면 Threads_created 값이 1씩 증가하고, cache에 있는 thread를 사용할 경우는 Threads_created 값은 증가하지 않는다.

즉 Connections 값과 Threads_created 값, 그리고 현재 MySQL 서버가 얼마정도로 바쁜지를 파악하여 이 thread_cache_size 값을 조절해줘야 한다.

그러나 MySQL 서버가 상당히 바쁘고(STATUS == busy 이상) 이 값이 작으면 Connections이 이루어질때마다 새로운 thread가 생성된다

아래와 같은 공식으로 thread_cache_size 를 맞춰주면 된다고 한다.[ref. 6]

  • 100 - ((Threads_created / Connections) * 100)

MySQL 모니터링

먼저 기본적으로 MySQL 에서 제공하는 slow_query_log 와 performance schema 를 이용해 보는 것이 좋을 듯 하다.

slow_query_log

Performance Schema 관련


SHOW GLOBAL STATUS LIKE "Questions";
SHOW GLOBAL STATUS LIKE "Com_select";
Writes = Com_insert + Com_update + Com_delete

Munin

Percona


References

  1. MySQL: mysql-stress-test.pl — Server Stress Test Program 
  2. How do I... Stress test MySQL with mysqlslap? - TechRepublic
  3. Linux ETC - Sysbench를 통한 System, MySQL 성능 테스트 
  4. MySQL의 max_connections과 thread_cache에 대해 - Mimul's Developer World
  5. MariaDB Memory Allocation - MariaDB Knowledge Base
  6. 15 Useful MySQL/MariaDB Performance Tuning and Optimization Tips - Part 2
  7. 15 Useful MySQL/MariaDB Performance Tuning and Optimization Tips - Part 4 

댓글 없음:

댓글 쓰기