mysql が毎日同じ時間に応答しなくなる

mysql が毎日同じ時間に応答しなくなる

私のサーバーは毎日同じ時間にダウンします。問題は mysql によるものであることがわかりました。

show processlist; を試したところ、データベースがスリープモードに入っていることがわかりました。以下に示すように、log_url テーブルに多数の挿入があったことがわかりました。

mysql> show processlist;
+-------+---------------+-----------+------------------+---------+------+--------------+------------------------------------------------------------------------------------------------------+
| Id    | User          | Host      | db               | Command | Time | State        | Info                                                                                                 |
+-------+---------------+-----------+------------------+---------+------+--------------+------------------------------------------------------------------------------------------------------+
| 72962 | sonicsense_db | localhost | sonicsense_db    | Query   |    1 | Sending data | SELECT `log_url`.* FROM `log_url` LIMIT 2381 OFFSET 2992917                                          |
| 74069 | sonicsense_db | localhost | sonicsense_db    | Query   |    4 | Updating     | UPDATE `cron_schedule` SET `job_code` = 'captcha_delete_expired_images', `status` = 'error', `messag |
| 74073 | sonicsense_db | localhost | sonicsense_db    | Query   |   51 | update       | INSERT INTO `log_url` (`url_id`, `visitor_id`, `visit_time`) VALUES ('6528425', '4646727', '2013-08- |
| 74074 | sonicsense_db | localhost | sonicsense_wp_db | Sleep   |   52 |              | NULL                                                                                                 |
| 74077 | sonicsense_db | localhost | sonicsense_db    | Query   |   41 | update       | INSERT INTO `log_url` (`url_id`, `visitor_id`, `visit_time`) VALUES ('6528426', '4646728', '2013-08- |
| 74078 | sonicsense_db | localhost | sonicsense_wp_db | Sleep   |   42 |              | NULL                                                                                                 |
| 74079 | sonicsense_db | localhost | sonicsense_db    | Query   |   36 | update       | INSERT INTO `log_url` (`url_id`, `visitor_id`, `visit_time`) VALUES ('6528427', '4646729', '2013-08- |
| 74080 | sonicsense_db | localhost | sonicsense_wp_db | Sleep   |   37 |              | NULL                                                                                                 |
| 74081 | sonicsense_db | localhost | sonicsense_db    | Query   |   34 | update       | INSERT INTO `log_url` (`url_id`, `visitor_id`, `visit_time`) VALUES ('6528428', '4646730', '2013-08- |
| 74082 | sonicsense_db | localhost | sonicsense_db    | Query   |   31 | update       | INSERT INTO `log_url` (`url_id`, `visitor_id`, `visit_time`) VALUES ('6528429', '4646731', '2013-08- |
| 74084 | sonicsense_db | localhost | sonicsense_wp_db | Sleep   |   32 |              | NULL                                                                                                 |
| 74085 | sonicsense_db | localhost | sonicsense_db    | Query   |   30 | update       | INSERT INTO `log_url` (`url_id`, `visitor_id`, `visit_time`) VALUES ('6528430', '4646732', '2013-08- |
| 74086 | sonicsense_db | localhost | sonicsense_db    | Query   |   31 | Updating     | UPDATE `catalogsearch_query` SET `query_text` = 'PreSonus', `num_results` = '154', `popularity` = '3 |
| 74087 | sonicsense_db | localhost | sonicsense_wp_db | Sleep   |   31 |              | NULL                                                                                                 |
| 74088 | sonicsense_db | localhost | sonicsense_db    | Query   |   20 | update       | INSERT INTO `log_url` (`url_id`, `visitor_id`, `visit_time`) VALUES ('6528431', '4646734', '2013-08- |
| 74089 | sonicsense_db | localhost | sonicsense_wp_db | Sleep   |   20 |              | NULL                                                                                                 |
| 74090 | sonicsense_db | localhost | sonicsense_db    | Query   |   12 | update       | INSERT IGNORE INTO core_cache_tag (tag, cache_id) VALUES ('MAGE_cache_DEFAULT', 'MAGE_cache_LAYOUT_1 |
| 74091 | sonicsense_db | localhost | sonicsense_db    | Query   |   10 | update       | INSERT INTO `log_url` (`url_id`, `visitor_id`, `visit_time`) VALUES ('6528432', '4646736', '2013-08- |
| 74092 | sonicsense_db | localhost | sonicsense_wp_db | Sleep   |   11 |              | NULL                                                                                                 |
| 74093 | sonicsense_db | localhost | sonicsense_db    | Query   |    9 | update       | INSERT INTO `log_url` (`url_id`, `visitor_id`, `visit_time`) VALUES ('6528433', '4646737', '2013-08- |
| 74094 | sonicsense_db | localhost | sonicsense_wp_db | Sleep   |   10 |              | NULL                                                                                                 |
| 74095 | sonicsense_db | localhost | NULL             | Query   |    0 | NULL         | show processlist                                                                                     |
+-------+---------------+-----------+------------------+---------+------+--------------+------------------------------------------------------------------------------------------------------+

mysql を再起動すると問題は解決します。挿入がこれほど多く発生している原因と、データベースがスリープ モードになっている理由を検出するにはどうすればよいでしょうか。

また、mysql ログを調べてみましたが、以下のエラーが見つかりました。1) 最後のチェックポイントの経過時間は 9433987 で、InnoDB: はログ グループの容量 9433498 を超えています。

2) /var/log/mysql/mysql.log をログに使用できませんでした (エラー 2)。ログを全体的にオフにします。

今日もう一度試してみたところ、以下のデータベースがスリープモードになっていることがわかりました

63211   sonicsense_db   localhost       sonicsense_wp_db        Sleep   49              NULL
63215   sonicsense_db   localhost       sonicsense_wp_db        Sleep   37              NULL
63217   sonicsense_db   localhost       sonicsense_wp_db        Sleep   37              NULL
63219   sonicsense_db   localhost       sonicsense_wp_db        Sleep   36              NULL
63221   sonicsense_db   localhost       sonicsense_wp_db        Sleep   16              NULL

MySQL によるサイトクラッシュの問題を解決する方法を知っている人はいますか。

スロークエリログを有効にすると、以下の詳細が表示されます

/usr/libexec/mysqld, Version: 5.1.69-log (Source distribution). started with:
Tcp port: 0  Unix socket: /var/lib/mysql/mysql.sock
Time                 Id Command    Argument
/usr/libexec/mysqld, Version: 5.1.69-log (Source distribution). started with:
Tcp port: 0  Unix socket: /var/lib/mysql/mysql.sock
Time                 Id Command    Argument
/usr/libexec/mysqld, Version: 5.1.69-log (Source distribution). started with:
Tcp port: 0  Unix socket: /var/lib/mysql/mysql.sock
Time                 Id Command    Argument
/usr/libexec/mysqld, Version: 5.1.69-log (Source distribution). started with:
Tcp port: 0  Unix socket: /var/lib/mysql/mysql.sock
Time                 Id Command    Argument

毎日同じ時間にmysqlが応答しなくなる理由がまだわかりません

答え1

/etc/mysql/my.cnf設定を編集して以下を追加します:

    log_slow_queries = /var/log/mysql/mysql-slow.log
    long_query_time  = 2

最初の行は、低速クエリ ログを有効にします (ローテーションすることを忘れないでください)。2 番目の行は、クエリが低速であると見なされるために最低何秒かかる必要があるかを示します。

これを有効にすると、MySQL インスタンスの速度を著しく低下させるクエリの調査を開始できます。

答え2

Magento は一種のリソース浪費家です。

とにかく、私の記憶では、サイト (PHP) だけでなく、MySQL などのバックグラウンド プロセスも最適化する Magento 用のプラグインがあります。

私がこう言っているのは、もしそれが毎日まったく同じ時間に起こるなら、それは Magento がクエリを起動しているということであり、MySQL の問題ではないからです。

個人的には、

答え:

1: VMにMagentoを最初からインストールする

2: MySQLサーバー上に新しいデータベースを作成する

3: それが起こるかどうか見てみましょう

またはB:

1: MagentoインストールをVMにクローンする

2: VMに新しいMySQLサーバーを作成する

3: それが起こるかどうか見てみましょう

MySQL 自体は標準ではこの種の最適化を一切行わないため、B になると思います。これで問題が解決するわけではありませんが、MySQL の問題 (可能性は低い) か Magento の問題 (可能性は高い) かを切り分けることができます。

どちらでもない場合は、Apache が原因である可能性がありますが、同時に発生することはまれです。

関連情報