Pular para o conteúdo

Sobrecarga de Banco de Dados: Problemas de Performance e Utilização Excessiva

Servidor de BD sobrecarregado

Você já viu um servidor de Banco de Dados sobrecarregado?

Em um reino muito distante, em um determinado BD, uma aplicação com um SQL Ruim (que estava demorando mais de 10 min. p/ executar e que tinha 25 usuários executando a mesma query) juntou com o processamento da folha de pagamento, e juntos eles resolveram acabar com a performance do BD. Vários usuários ligaram p/ os DBAs daquele reino reclamando da performance dos sistemas que eles estavam utilizando. Você já passou por isso?

Veja abaixo a sobrecarga da máquina através do utilitário “top” do linux:

top - 15:08:35 up 52 days, 1:17, 2 users, load average: 39.30, 37.35, 34.78
Tasks: 813 total, 3 running, 810 sleeping, 0 stopped, 0 zombie
Cpu(s): 9.4%us, 0.7%sy, 0.0%ni, 45.5%id, 44.2%wa, 0.0%hi, 0.1%si, 0.0%st
Mem: 49447640k total, 49304884k used, 142756k free, 474224k buffers
Swap: 16777208k total, 354940k used, 16422268k free, 13203968k cached

PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
1406 oracle 18 0 13.2g 36m 31m D 69.0 0.1 0:07.63 oracle
1819 oracle 16 0 13.2g 35m 28m D 25.9 0.1 0:07.78 oracle
16863 oracle 15 0 13.2g 38m 31m S 8.3 0.1 0:19.80 oracle
11556 oracle 15 0 13.2g 56m 43m S 5.0 0.1 2:06.96 oracle
1190 oracle 16 0 13.3g 117m 66m D 4.0 0.2 635:42.60 oracle
10252 oracle 16 0 13.2g 65m 49m D 2.7 0.1 3:40.77 oracle
26779 oracle 16 0 13.2g 27m 24m D 2.7 0.1 0:05.73 oracle
29807 oracle 16 0 13.2g 49m 35m D 2.7 0.1 3:20.35 oracle
1410 oracle 16 0 13.2g 34m 31m D 2.0 0.1 0:02.92 oracle
2141 oracle 16 0 13.2g 22m 19m S 2.0 0.0 0:00.82 oracle
3132 oracle 16 0 13.2g 49m 35m S 2.0 0.1 2:51.64 oracle
29821 oracle 15 0 13.2g 45m 33m S 2.0 0.1 3:35.75 oracle
9497 oracle 16 0 13.2g 49m 35m D 1.7 0.1 2:41.26 oracle
1831 oracle 16 0 13.2g 47m 34m D 1.3 0.1 162:25.51 oracle
15856 oracle 15 0 13.2g 45m 33m S 1.3 0.1 2:04.83 oracle
1412 oracle 15 0 13.3g 69m 31m S 1.0 0.1 0:01.65 oracle
3973 oracle 16 0 212m 21m 11m S 1.0 0.0 0:00.03 perl
27373 oracle 15 0 13.2g 45m 34m S 1.0 0.1 1:49.79 oracle
32384 oracle 16 0 13.2g 49m 37m D 1.0 0.1 2:17.92 oracle
1200 oracle 15 0 13.3g 113m 66m S 0.7 0.2 2341:20 oracle
2059 oracle 15 0 13.2g 30m 27m S 0.7 0.1 0:02.17 oracle
2160 oracle 16 0 13.2g 44m 31m D 0.7 0.1 16:25.39 oracle
3061 oracle 16 0 13.2g 40m 26m D 0.7 0.1 0:00.31 oracle
6447 oracle 15 0 88532 13m 9004 S 0.7 0.0 250:15.30 tnslsnr
11849 oracle 16 0 13.2g 41m 35m S 0.7 0.1 0:45.06 oracle
14996 oracle 15 0 13.2g 44m 34m S 0.7 0.1 1:30.02 oracle
16176 oracle 15 0 13.3g 83m 43m S 0.7 0.2 0:15.87 oracle
16698 oracle 15 0 13.2g 35m 31m S 0.7 0.1 0:03.38 oracle
17942 oracle 16 0 13.3g 79m 40m S 0.7 0.2 0:12.06 oracle
18090 oracle 16 0 13.2g 35m 31m D 0.7 0.1 0:05.45 oracle
26506 oracle 16 0 13.2g 49m 33m D 0.7 0.1 1:54.76 oracle
26773 oracle 16 0 13.2g 28m 24m D 0.7 0.1 0:07.61 oracle
31523 oracle 16 0 13.2g 49m 35m S 0.7 0.1 2:34.70 oracle
31961 oracle 16 0 9442m 161m 157m D 0.7 0.3 0:01.48 oracle
1 root 15 0 10364 636 544 S 0.3 0.0 38:55.99 init
477 root 10 -5 0 0 0 S 0.3 0.0 24:19.72 kblockd/0
1160 oracle 15 0 13.2g 32m 15m S 0.3 0.1 10:22.19 oracle
1162 oracle 15 0 13.2g 39m 37m S 0.3 0.1 26:32.58 oracle
1176 oracle 15 0 13.2g 16m 14m S 0.3 0.0 60:48.66 oracle
1178 oracle 15 0 13.2g 16m 14m S 0.3 0.0 41:52.80 oracle
1180 oracle 15 0 13.2g 16m 14m S 0.3 0.0 37:32.45 oracle
1186 oracle 16 0 13.3g 118m 59m D 0.3 0.2 3822:01 oracle
1196 oracle 18 0 13.2g 75m 57m D 0.3 0.2 160:15.95 oracle
1202 oracle 16 0 13.3g 113m 66m S 0.3 0.2 44:29.31 oracle
1210 oracle 16 0 13.2g 56m 44m D 0.3 0.1 25:01.98 oracle
1222 oracle 16 0 13.2g 52m 42m D 0.3 0.1 5:58.01 oracle
1556 oracle 15 0 13.2g 24m 18m S 0.3 0.1 0:00.04 oracle
1815 oracle 15 0 13.2g 32m 28m S 0.3 0.1 0:01.72 oracle
1944 oracle 15 0 13288 1704 844 R 0.3 0.0 0:00.69 top
2061 oracle 16 0 13.2g 37m 26m D 0.3 0.1 0:01.55 oracle
2075 oracle 16 0 13.2g 39m 24m D 0.3 0.1 0:00.43 oracle
3101 oracle 15 0 13.2g 41m 26m S 0.3 0.1 0:00.35 oracle
3252 oracle 16 0 13.2g 40m 25m D 0.3 0.1 0:00.33 oracle
3681 oracle 16 0 13288 1720 844 S 0.3 0.0 0:00.10 top

A carga média desta máquina gira em torno de 2 e quando normalmente há uma carga maior, ela chega à 8. No caso acima chegou quase em 40.

A solução paliativa até que arrumem a “query monstra” foi limitar recursos para o usuário da aplicação que a executava, através do Database Resource Manager. Agora é só aguardar que os desenvolvedores da aplicação otimizem a “mardita e marvada query”!

[]s

Fábio Prado

Fábio Prado

Atua na área de tecnologia há 13 anos, possui experiência e profundos conhecimentos em Análise de Sistemas, programação com Dot Net e Administração de Bancos de Dados Oracle.

É Oracle ACE, DBA Oracle, instrutor de treinamentos em Bancos de Dados Oracle na FABIOPRADO.NET, articulista da revista SQL Magazine e diversos blogs e sites de TI e autor do blog www.fabioprado.net . É Bacharel em Ciências da Computação, com MBA e Pós-graduação em Gestão de Projetos.

Possui as seguintes certificações: Microsoft: MCP, MCSD, MCAD, MCSD.NET, MCDBA, MCTS, MCT e MCPD; Oracle: OCP Database 10G e 11G, OCA PL/SQL e Oracle Database 11g Performance Tuning Certified Expert.

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *

Marcações:
plugins premium WordPress