Skip to content

Latest commit

 

History

History
59 lines (39 loc) · 1.85 KB

01.measure-slow-query.md

File metadata and controls

59 lines (39 loc) · 1.85 KB

スロークエリ計測

本番のアプリが MySQL を使っていることが前提。pt-query-digest を使う

1. pt-query-digest のインストール

wget https://www.percona.com/downloads/percona-toolkit/3.0.10/binary/debian/xenial/x86_64/percona-toolkit_3.0.10-1.xenial_amd64.deb
sudo apt-get install libdbd-mysql-perl libdbi-perl libio-socket-ssl-perl libnet-ssleay-perl libterm-readkey-perl
sudo dpkg -i percona-toolkit_3.0.10-1.xenial_amd64.deb

2. MySQL の設定でスロークエリを吐き出すようにする

sudo vim /etc/mysql/mysql.conf.d/mysqld.cnf

# 以下を追加
slow_query_log = 1
slow_query_log_file = /var/log/mysql/mysql-slow.log
long_query_time = 0

sudo systemctl restart mysql

# 変更が読み込まれているかの確認
sudo mysql
mysql> show variables like 'slow%';

3. (2 回目以降の実行の場合) ログローテ

ログが一つのファイルに積み上がる形式のため、視認性のためにログローテする

now=`date +%Y%m%d-%H%M%S` && sudo mv /var/log/mysql/mysql-slow.log /var/log/mysql/mysql-slow.log.$now && sudo mysqladmin flush-logs

4. ベンチマーカー実行

方法なりは、過去問や本戦の README を参照

5. pt-query-digest を実行

# スロークエリログ解析
sudo pt-query-digest /var/log/mysql/mysql-slow.log

# ログの中身が大きい時は、lessでパイプする
sudo pt-query-digest /var/log/mysql/mysql-slow.log | less

補足: ADMIN PREPARE 対策 (WIP)

ADMIN PREPARE がボトルネックに上がってきた時は、&interpolateParams=true を追加。

参考