VM na Amazon com load alto, o que fazer?
Atenção: este procedimento só é aconselhado no caso do servidor não querer voltar sozinho.
Modelo de exemplo:
- 1 servidor de aplicação (APACHE)
- 1 servidor de banco (MySQL)
Ferramentas utilizadas:
- 1 servidor NAGIOS (Monitoramento).
Verificamos um alarme em nossa ferramenta :
SERVICE ALERT: Servidor WEB - CRITICAL HARD ; 3 ;CRITICAL - load average: 21.19, 9.51, 4.02
É importante verificar no servidor de aplicação, se tem algo impedindo de executar os processos.
top - 20:09:09 up 14 days, 7:08, 3 users, load average: 21.19, 9.51, 4.02
Tasks: 135 total, 1 running, 134 sleeping, 0 stopped, 0 zombie
Cpu(s): 5.7%us, 2.2%sy, 0.0%ni, 91.4%id, 0.7%wa, 0.0%hi, 0.0%si, 0.0%st
Mem: 15408168k total, 11613132k used, 3795036k free, 484212k buffers
Swap: 0k total, 0k used, 0k free, 7276380k cached
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
2309 daemon 20 0 986m 78m 44m S 0.0 0.5 0:24.40 /usr/local/apache/bin/httpd -k start
2451 daemon 20 0 986m 78m 44m S 0.0 0.5 0:26.78 /usr/local/apache/bin/httpd -k start
1681 daemon 20 0 988m 77m 41m S 0.0 0.5 0:41.60 /usr/local/apache/bin/httpd -k start
698 daemon 20 0 987m 76m 41m S 16.9 0.5 1:31.80 /usr/local/apache/bin/httpd -k start
2192 daemon 20 0 991m 76m 37m S 0.0 0.5 0:34.91 /usr/local/apache/bin/httpd -k start
2605 daemon 20 0 987m 74m 39m S 0.0 0.5 5:11.76 /usr/local/apache/bin/httpd -k start
2449 daemon 20 0 985m 73m 42m S 0.0 0.5 0:23.61 /usr/local/apache/bin/httpd -k start
OBS.:
- O PID 698 tem um TIME maior que a maioria dos outros processos, porém, tem consumo de CPU e de memória, podemos concluir que é um processo que esta em execução.
- O PID 2605 tem um TIME maior ainda que todos , porém, não apresenta consumo de CPU e nem de memória, podemos concluir que é um processo candidato a ser o nosso problema.
não havia também um cron rodando no momento do load .
Agora olhamos o servidor de banco de dados, vejamos se alguma query esta parada em sleep por muito tempo ou se existe alguma tabela em lock.
[root@root|~]# /usr/local/mysql/bin/mysql -uroot -p -e'show processlist;'
+----------------+------------+-------------------------------------------+----------+----------------------+------------+------------------------------------------------------+------------------+
| Id | User | Host | db | Command | Time | State | Info |
+----------------+------------+-------------------------------------------+----------+----------------------+------------+-------------------------------------------------------+------------------+
| 14938960 | slave | 192.168.0.1 | NULL | Binlog Dump | 982667 | Master (...) | NULL |
| 17943874 | user | 192.168.0.2 | teste | Sleep | 370 | | NULL |
| 17944307 | user | 192.168.0.2 | teste | Sleep | 1426 | | NULL |
| 17944562 | user | 192.168.0.2 | teste | Sleep | 1396 | | NULL |
| 17953902 | user | 192.168.0.2 | teste | Sleep | 2 | | NULL |
| 17953913 | user | 192.168.0.2 | teste | Sleep | 0 | | NULL |
| 17953914 | root | localhost | NULL | Query | 0 | NULL | show processlist |
+---------------+-------------+-------------------------------------------+-----------+---------------------+------------+-------------------------------------------------------+------------------+
Com esse cenário podemos concluir que os processos mysql (17944562, 17944307 e 17943874) estão congestionando a fila de processos e não estão processando nada (Campo State vazio) .
Resolução:
- acesse o mysql : /usr/local/mysql/bin/mysql -uroot -p
- dê o comando : mysql> show processlist;
- dê kill nos processos parados : kill 17944307;
Você verá que o processo httpd que estava ligado ao processo mysql que foi morto, morrerá também, aliviando assim a carga.
Nenhum comentário:
Postar um comentário
Comente ai!!!!