Meu servidor fica inativo todos os dias no mesmo horário. Descobri que o problema era devido ao mysql.
Eu tentei mostrar lista de processos; e descobri que o banco de dados estava entrando no modo de suspensão. Eu vi que havia tantas inserções na tabela log_url conforme mostrado abaixo
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 |
+-------+---------------+-----------+------------------+---------+------+--------------+------------------------------------------------------------------------------------------------------+
reiniciar o mysql resolve meu problema. Como posso detectar o que está causando tantas inserções e por que meu banco de dados está entrando no modo de suspensão.
Também tentei consultar o log do mysql e encontrei abaixo o erro 1) a idade do último ponto de verificação é 9433987, InnoDB: que excede a capacidade do grupo de logs 9433498.
2) Não foi possível usar /var/log/mysql/mysql.log para registro (erro 2). Desativando o logon por completo
Tentei novamente hoje e encontrei o banco de dados abaixo no modo de suspensão
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
Alguém sabe como posso corrigir o problema de travamento do site devido ao mysql.
Ativei o log de consulta lenta e recebi os detalhes abaixo
/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
Ainda não consigo encontrar nenhuma razão pela qual o mysql deixa de responder todos os dias no mesmo horário
Responder1
Edite /etc/mysql/my.cnf
a configuração e adicione:
log_slow_queries = /var/log/mysql/mysql-slow.log
long_query_time = 2
A primeira linha ativa o log de consulta lenta (lembre-se de girá-lo) e a segunda é sobre quantos segundos, no mínimo, uma consulta deve levar para ser considerada lenta.
Uma vez habilitado isso, você pode começar a investigar quais são as consultas que retardam sensivelmente sua instância do MySQL.
Responder2
Magento é uma espécie de consumidor de recursos.
De qualquer forma, pelo que me lembro, existem plugins para Magento que otimizam não só o site (PHP), mas também processos em segundo plano como o MySQL.
Estou dizendo isso porque se isso acontecer todos os dias exatamente no mesmo horário, então o Magento está lançando uma consulta, não é um problema do MySQL.
Pessoalmente, eu também
A:
1: Instale o Magento do zero em uma VM
2: Crie um novo banco de dados nesse servidor MySQL
3: Veja se isso acontece
ou B:
1: Clone a instalação do Magento em uma VM
2: Faça um novo servidor MySQL em uma VM
3: Veja se isso acontece
Tenho a sensação de que será B, pois o próprio MySQL não faz nenhum tipo de otimização desse tipo em estoque. Embora isso possa não resolver o seu problema, irá isolá-lo se for um problema do MySQL (improvável) ou um problema do Magento (provavelmente)
Se não for nenhum desses, o Apache PODERIA ser o culpado, mas é raro, pois acontece exatamente ao mesmo tempo.