Мой сервер падает каждый день в одно и то же время. Я обнаружил, что проблема была в 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
Первая строка включает журнал медленных запросов (не забудьте его повернуть), а вторая — указывает, сколько секунд как минимум должен длиться запрос, чтобы его можно было считать медленным.
После включения этой функции вы можете начать исследовать, какие запросы существенно замедляют работу вашего экземпляра MySQL.
решение2
Magento — своего рода пожиратель ресурсов.
В любом случае, насколько я помню, существуют плагины для Magento, которые оптимизируют не только сайт (PHP), но и фоновые процессы, такие как MySQL.
Я говорю это потому, что если это происходит каждый день в одно и то же время, то это Magento запускает запрос, а не проблема MySQL.
Лично я бы либо
А:
1: Установка Magento с нуля на виртуальной машине
2: Создайте новую базу данных на этом сервере MySQL
3: Посмотрим, произойдет ли это
или Б:
1: Клонируйте установку Magento на виртуальную машину
2: Создайте новый сервер MySQL на виртуальной машине
3: Посмотрим, произойдет ли это
У меня есть ощущение, что это будет B, так как MySQL сам по себе не делает никакой оптимизации такого рода из запаса. Хотя это может и не решить вашу проблему, это изолирует ее, если это проблема MySQL (маловероятно) или проблема Magento (скорее всего)
Если ни то, ни другое, виновником МОЖЕТ быть Apache, но это случается редко, так как происходит в одно и то же время.