Existe uma maneira de reiniciar o MySQL automaticamente, se ele consumir muito poder de processamento?

1

Devido a alguns erros de script da minha parte, o MySQL às vezes fica descontrolado - consumindo muita energia da CPU (carga média de mais de 20 - eu só tenho 8 núcleos)! Quando eu reiniciar, está tudo bem novamente.

Então, minha pergunta é: existe uma maneira de reiniciar o MySQL quando ele ocupa mais de 400% da CPU?

De preferência, eu reiniciaria apenas a (s) conta (s) associada (s) que causam o problema.

Servidor: Linux com whm

    
por Chriswede 18.05.2012 / 14:58

3 respostas

16

Reiniciar o mysql nesse caso é uma prática ruim. Isso resulta em sobrecarregar seus buffers e se o banco de dados for grande o suficiente - levará algum tempo para aquecer.

Suponho que você tenha algumas consultas pesadas que consomem muita CPU.

Use mysql> show full processlist para identificar consultas demoradas e tente otimizá-las: crie índices, reescreva consultas para executar mais rapidamente e faça menos classificação.

Para resultados imediatos, você pode eliminar essas consultas usando:

mysql> kill QUERYIDNUMBER

Para responder diretamente às suas perguntas, você pode reiniciá-lo com segurança com service mysql restart , mas isso levará muito tempo. A reinicialização bloqueará todas as novas conexões com o banco de dados, mas aguardará até que todas as consultas em execução sejam concluídas. Você pode matar consultas pesadas para acelerar.

Além disso, se você precisar acelerar o reinício do mysql, há um bom truque para fazê-lo.

Primeiro, execute mysql> set global innodb_max_dirty_pages_pct = 0; aguarde até que todas (ou quase todas) as páginas de buffer sujas sejam liberadas para o disco, consulte mysqladmin ext -i10 | grep dirty

Quando você tem uma saída assim:

| Innodb_buffer_pool_pages_dirty | 12 |

Você pode reiniciar seu servidor mysql e será muito mais rápido:

service mysql restart

    
por 18.05.2012 / 15:09
6

Eu só posso repetir que é realmente uma má ideia tentar resolver esse problema reiniciando o mysql. Você deve tentar identificar e otimizar as consultas que causam sobrecarga no servidor.

Duas dicas que podem ajudar você:

  1. O mysqltuner.pl irá analisar a sua configuração atual e mostrar-lhe onde estão alguns dos óbvios assassinos de desempenho.
  2. O log de consultas lentas registrará todas as consultas por mais tempo do que um tempo configurável. Você pode então analisar as consultas individuais usando o comando EXPLAIN SQL.
por 18.05.2012 / 16:03
4

monit fará isso por você: link

    
por 18.05.2012 / 15:02