Como detectar o processo (e consulta mysql) que faz alta carga no servidor?

1

De vez em quando carregar no meu servidor (centos 4) salta para 15 ou mais. Preciso descobrir qual processo causa essa alta carga no servidor. Existe algum script que possa lidar com isso para mim? Eu acho que isso é causado pelo mysql, por isso mesmo para descobrir a consulta SQL seria uma grande ajuda.

    
por chubbyk 29.09.2011 / 19:18

3 respostas

6

Carga de servidor alta normalmente causada por E / S de disco. Existem algumas maneiras de identificar qual processo está aguardando a E / S do disco:

  • iotop
  • top -b -i -n 10
  • atop e pressione D
  • htop - > F2 para adicionar 2 colunas IO_RBYTES e IO_WBYTES , depois F6 para ordenar
  • ...

Você deve prestar atenção especialmente aos processos em D state (ininterrupible sleep):

watch "ps -eo pid,user,state,command | awk '\ == /D/ { print \
watch "ps -eo pid,user,state,command | awk '\ == /D/ { print \%pre% }'"
}'"
    
por 29.09.2011 / 19:46
2
SHOW FULL PROCESSLIST\G

procure por algo com um tempo de execução longo.

EXPLIQUE para ver se está fazendo varreduras de tabela completas, gerando tabelas temporárias, etc.

Caso contrário, você pode usar algo como a versão gratuita do Jet ( link )

Garrett

    
por 29.09.2011 / 19:38
0

Se for o caso que o mysql é a causa da carga alta, então o Mysql suporta um argumento slow_query_log , e uma vez ativado ele registrará qualquer consulta particularmente lenta em um arquivo;
link

The slow query log consists of SQL statements that took more than long_query_time seconds to execute and required at least min_examined_row_limit rows to be examined. The minimum and default values of long_query_time are 0 and 10, respectively.

    
por 09.07.2016 / 22:51