[firebase-br] Ubuntu + Firebird 2.0 = processador com 100%

Denis denisrocha em hotmail.com
Seg Fev 19 16:37:20 -03 2007


Olá,

Uma vez tive um problema assim. E era falta de indices nas tabelas. Eu 
estava fazendo uma pesquisa e de acordo com o resultado da pequisa eu criava 
o registro com insert. Só que como o banco foi crescendo a consulta foi 
demorando cada vez mais.
Quando eu criei os indices corretamente, o processamento que demorava coisa 
de uns 30 segundos congelados, passou a fazer instantanemente.


Denis


"Daisson" <daisson em gmail.com> escreveu na 
mensagem news:ercm5c$mqq$1 em sea.gmane.org...
Olá lista.

Temos uma situação um pouco estranha ocorrendo em um cliente. Abaixo
segue os detalhes.

O banco de dados está num micro HP Xeon 3.2GHz com 1GB RAM e HD SCSI
com 15.000rpm.
O acesso é feito através de WTS num Pentium 4, 3.0GHz com 4GB de RAM e
HD SATA com 7.200rpm.
Diariamente são 33 pessoas conectadas ao servidor (23 utilizando o
nosso sistema e os demais utilizando o sistema de Folha de Pagmento
(não sei qual é o sistema)).

O problema é o seguinte:

Sempre quando algum dos usuários conectados ao nosso sistema executa a
geração de um balancete/balanço o sistema 'congela' para os demais
usuários. A geração do balancete/balanço não esta dentro de Stored
Procedures, porém o processo consiste basicamente em INSERT INTO
'tabela' SELECT 'dados'. O detalhe é que o processo do firebird no
servidor de banco de dados (ubuntu) alcança os 100% e fica assim até o
fim da geração do balancete/balanço (algo em torno de 2min), e o 'load
average' alcança de 0.95 a 0.99.

Analisando o firebird.log, no dia de hoje, percebi o seguinte:

db (Server) Mon Feb 19 09:57:29 2007
INET/inet_error: read errno = 104

db (Server) Mon Feb 19 09:57:29 2007
INET/inet_error: read errno = 32

db (Server) Mon Feb 19 14:42:34 2007
INET/inet_error: read errno = 104

db (Server) Mon Feb 19 14:48:22 2007
INET/inet_error: read errno = 104

db (Server) Mon Feb 19 14:48:22 2007
INET/inet_error: read errno = 104

db (Server) Mon Feb 19 14:48:22 2007
INET/inet_error: read errno = 104

Esses erros podem ser a causa do problema?

Claro que o processo de geração de balancete/balanço deve ser
melhorado. Talvez todo ele dentro de stored procedures. Todo o processo
inclui aproxidamente 2.500 registros. Sendo que a tabela principal da
base de dados desse cliente tem mais de 900.000 registros. Outro
detalhe talvez impostantíssimo é que não temos nenhum índice na tabela
temporária que armazena a geração do balancete/balanço.

Gostaria de sugestões para que eu possa entender o que é melhor fazer
para solucionar o problema.

Obrigado.
-- 
Daisson
Pinhalzinho - SC


______________________________________________
FireBase-BR (www.firebase.com.br) - Hospedado em www.locador.com.br
Para editar sua configuração na lista, use o endereço 
http://mail.firebase.com.br/mailman/listinfo/lista_firebase.com.br
Para consultar mensagens antigas: http://firebase.com.br/pesquisa







Mais detalhes sobre a lista de discussão lista