MySQL/MariaDB CPU 모니터링
· Version : MySQL 5.7.21, Ubuntu 17.4
CPU 사용률은 모든 운영체제에서 가장 중요한 모니터링 지표이다. 이번 포스트는 기본적인 CPU 모니터링 방법에 대해서 살펴본다. 리눅스에서는 다양한 명령어를 사용하여 CPU 사용률을 확인할 수 있다.
· Top 명령을 사용한 CPU 모니터링 : http://sqlmvp.kr/221024130336
기본적으로 CPU 사용량을 확인하기 위해서는 mpstat명령을 사용할 수 있다. 일반적으로 데이터베이스의 경우 시스템을 독립해서 사용하기 때문에 대부분의 CPU 사용량은 CPU System, CPU User, CPU IOwait 이 차지한다.
mpstat |
[IOwait 높은 경우]
CPU 사용량이 높으면서 상대적으로 IOwait 사용량이 높다면 디스크의 I/O 오퍼레이션에 의한 병목을 의심해야 한다. 위에서 언급했듯이 일반적으로 데이터베이스 서버의 경우 독립적으로 운영하기 때문에 이 항목이 높다면 MySQL 서버가 실행되는 서버의 디스크 성능이 쿼리 트래픽을 처리하지 못해서 발생할 수 있다. 이때 초당 쿼리 유입량을 함께 확인하여 실제 요청이 많은지 확인할 필요가 있다. 또한 최적화 되지 않은 쿼리로 인하여 요청량은 적지만 디스크에 많은 부하를 일으키는 경우 IOwait가 높게 나타날 수 있다. 이 경우는 적절한 인덱스를 사용하도록 가이드하거나 불필요한 정렬이나 그룹핑을 하지 않도록 하는것도 방법이다. 또한 빈번한 서브쿼리의 경우 결과를 임시테이블에(메모리보다 결과가 클겅우) 적재하여 처리하기 때문에 디스크 사용이 높을 수 있다.
[CPU User 높은 경우]
CPU IOwait 및 CPU System상태가 낮은대 반해 CPU User 비율이 높은것은 MySQL 서버가 CPU를 안정적으로 잘 사용하고 있는 것으로 판단할 수 있다. 하지만 전체 CPU가 높은 상태에서 CPU User가 높은 경우 헤비한 쿼리(악성쿼리)가 발생하지 않는지 확인해볼 필요가 있다. 이 또한 단순하게 CPU 사용량만으로는 판단할 수 없으면 요청되는 쿼리량을 확인하여 쿼리량이 많으면서 CPU가 높으면 당연하지만 쿼리 요청량이 적은반면에 높다면 헤비 쿼리를 의심할 수 있다.
[CPU System 높은 경우]
CPU System 사용률이 높은 경우는 리눅스의 Kernel 프로세스의 CPU 사용량이 높은것으로 판단할 수 있다. 이 경우는 MySQL 서버가 커널이 실행해야하는 명령을 많이 수행한다는 뜻으로 커널의 의존성을 낮추기 위한 최적화 방안이 필요하다. 특히 서버가 데이터베이스 전용으로 사용하지 않고 다양한 어플리케이션이 함께 동작한다면 다른 요인으로 인해서 커널 사용량이 높을 수도 있다.
2018-03-26 / 강성욱 / http://sqlmvp.kr / http://sqlangeles.com
MySQL, MariaDB, linux, CPU 모니터링, mpstat, IOwait, CPU User, CPU Sytem, CPU 병목
'MySQL, MariaDB' 카테고리의 다른 글
MySQL/MariaDB Binlog Cache and Binlog Cache Size (0) | 2019.03.24 |
---|---|
MySQL/MariaDB Memory 모니터링 (0) | 2019.03.24 |
MySQL/MariaDB 서버 상태 모니터링 (0) | 2019.03.24 |
MySQL/MariaDB 서버 커넥션 사용 현황 모니터링 (1) | 2019.03.24 |
MySQL/MariaDB Cluster Index (0) | 2019.03.24 |