私のサーバーは毎日同じ時間にダウンします。問題は 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 が原因である可能性がありますが、同時に発生することはまれです。