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

Carlos H. Cantu (TeamFB) listas em warmboot.com.br
Seg Fev 19 16:59:41 -03 2007


Sugiro que vc revise os planos das consultas que são realizadas para
gerar o balancete, pois como nosso outro amigo disse, pode estar
faltando índices para agilizar as consultas, ou os índices escolhidos
podem não ser os ideais.

Gerar o balancete através de uma stored procedure selecionável também
pode ajudar.

[]s
Cantu (Membro do TeamFB - FireBase)
http://www.warmboot.com.br
FireBase - http://www.FireBase.com.br

D> Olá lista.

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

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

D> O problema é o seguinte:

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

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

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

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

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

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

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

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

D> Esses erros podem ser a causa do problema?

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

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

D> Obrigado.





Mais detalhes sobre a lista de discussão lista