mysqlのslowqueryを再起動無しで適用する

メモリ1GBのVPSでRailsアプリ2個とWordpress1個を動かしていたら、アクセスが多い時間にロードアベレージが2近くになってしまい、ターミナルでの操作がめっちゃ重くなってしまった。
top見てるとmysqlがやたらとcpuを食ってるので、久々にslowqueryを出してみる事にした。

見たいと思った時間がアクセスが多い23時台だったので、mysqlの再起動をしたくなかった。
再起動せずslowquery出す方法があったなぁと思ったけど、思いっきり忘れたので再度調べた事を備忘録しておく。

再起動せずにslowqueryを出す方法

mysqlにターミナルからログインして以下のコマンドを打つだけ。

set slow_query_log_file='/var/log/mariadb/slow.log';
set global slow_query_log=1;
set global long_query_time=1;

一旦ログアウトして再度ログインし直すと、上記の設定が反映されている事が分かる。

MariaDB [(none)]> show variables like 'slow_query%';
+---------------------+---------------------------+
| Variable_name       | Value                     |
+---------------------+---------------------------+
| slow_query_log      | ON                        |
| slow_query_log_file | /var/log/mariadb/slow.log |
+---------------------+---------------------------+

MariaDB [(none)]> show variables like 'long_query_time';
+-----------------+----------+
| Variable_name   | Value    |
+-----------------+----------+
| long_query_time | 1.000000 |
+-----------------+----------+

そして、slowqueryは結局出ていないというオチに…。
何かやたらとapiが遅くなってたんだけど、何でかなぁ…。

コメント

タイトルとURLをコピーしました