Página 1 de 1

Problema com velocidade leitura/gravação dados

Enviado: 23 Jul 2021 12:25
por tonicm
Tenho uma aplicação que passei do clipper para harbour e tenho algumas tabelas em .DBF e outras em MySQL.
A aplicação está a ser utilizada em rede no máximo por 6 postos.
O meu problema é que quando só está um posto a trabalhar, a aplicação até trabalha rápido, o problema é quando entram outros postos, aí fica bastante lenta.
Alguém sabe o que pode estar a causar esta lentidão?

Problema com velocidade leitura/gravação dados

Enviado: 23 Jul 2021 12:35
por sygecom
A parte que fica lenta é onde usa os DBF?

Está usando algum SET FILTER nessa rotina que fica lenta?

Problema com velocidade leitura/gravação dados

Enviado: 23 Jul 2021 13:57
por tonicm
Sim é nos dbfs.
Eu utilizo muito a criação de ficheiros dbf temporários no disco local c:\Temp\ de cada posto, para obter dados mais precisos para listagens/visualizações.
Não uso o SET FILTER na aplicação pois sempre foi um processo que ficava demasiado lento.

Problema com velocidade leitura/gravação dados

Enviado: 23 Jul 2021 14:08
por alxsts
Olá!

Se possível, procure gerar os DBFs temporários em memória. Veja exemplo:

Código: Selecionar todos

REQUEST HB_MEMIO
REQUEST DBFCDX
REQUEST HB_LANG_PT
REQUEST HB_CODEPAGE_PTISO

FUNCTION Main()

   LOCAL aArray

   Hb_LangSelect( 'PT' )
   Hb_CdpSelect( "PTISO" )

   aArray := {}

   DbCreate("mem:Teste", { { "Field1", "N", 2, 0 }, ;
                           { "Field2", "C", 4, 0 }, ;
                           { "Field3", "N", 2, 0 }, ;
                           { "Field4", "N", 2, 0 } } ,"DBFCDX", .T., "Teste")


   // ...
   // Procedimentos
   // ...

   DbCloseArea( "Teste" )
   DbDrop("mem:Teste",,"DBFCDX")

RETURN NIL

Problema com velocidade leitura/gravação dados

Enviado: 23 Jul 2021 17:24
por tonicm
Pode ser uma opção, mas estava a pensar primeiro saber qual a razão exata de ficar mais lento quando está mais que 1 posto a trabalhar.
Para fazer alterações no código, pode ficar melhor se passar para MySQL essas tabelas temporárias.

Problema com velocidade leitura/gravação dados

Enviado: 23 Jul 2021 18:06
por JoséQuintas
Provavelmente está usando NTX.

Problema com velocidade leitura/gravação dados

Enviado: 23 Jul 2021 19:13
por tonicm
Estou a usar CDX

Problema com velocidade leitura/gravação dados

Enviado: 24 Jul 2021 04:30
por JoséQuintas
Depende muito do que está fazendo nos fontes.
A princípio, deveria ser igual pra qualquer quantidade de usuários.

Problema com velocidade leitura/gravação dados

Enviado: 24 Jul 2021 09:58
por ANDRIL
Isto esta com cara de ser problema/configuração no Windows do servidor. Tem programas pesados no servidor rodando em conjunto com seu sistema? Como aplicativos que ficam consultando a internet para busca de pedidos o algo similar?

Tive um problema desses em um cliente, deixando as máquinas de rede bem lenta, achamos o problema no servidor, que tinha um programa que puxava pedidos online. Este programa executava a verificação a cada segundo, assim a rede interna sofria com lentidão, não devido ao consumo mas deixando o servidor escravo deste programa. Fechamos o programa e tudo voltou ao normal.

Há também configurações no registro do Windows que podem agilizar a Leitura/Gravação (CACHE) dos dados em disco, talvez ajude também.
Veja este assunto https://pctoledo.org/forum/viewto ... me#p113796

Até+

Problema com velocidade leitura/gravação dados

Enviado: 24 Jul 2021 10:53
por JoséQuintas
Colocou tempo nos testes de RLock(), por exemplo.

Código: Selecionar todos

DO WHILE ! Rlock()
ENDDO
Uma coisa igual acima vai sobrecarregar a rede à toa.

Código: Selecionar todos

DO WHILE ! Rlock()
   Inkey(0.5)
ENDDO
Já com tempo, a diferença vai ser brutal.

Nos tempos do Clipper eu usava OSLIB() de adicional, e colocava uma chamada a OL_Yield() pra liberar mais ainda para o Windows.
No Harbour o Inkey() já é suficiente.