Ir para conteúdo
  • Cadastre-se

dev botao

Perda de desempenho após atualização


Ver Solução Respondido por Daniel Simoes,
  • Este tópico foi criado há 1742 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.

Recommended Posts

  • Membros Pro
Postado (editado)

Olá a todos,

Vou tentar detalhar ao máximo todo o processo que ocorreu comigo.

Eu desenvolvo a minha aplicação emissora de NFCe/NFe em Delphi 2010 + Windows XP. O certificado em meus testes é um PFX carregado direto do banco com as configurações a seguir:

configuracao.png

Até então estava usando a revisão 17394 dos componentes, mas dado a mudança das URLs no ACBrConsultaCNPJ foi necessário realizar a atualização dos componentes. Ao fazer a atualização meus componentes foram para a revisão 19026.

Inicialmente ao executar o instalador dessa revisão (19026) recebi o erro "Function not found: mscoree.dll.CLRCreateInstance", que foi rapidamente sanado efetuando a instalação do Microsoft Net FrameWork 4.0 (graças a ajuda do pessoal do Chat ACBr).

Logo em seguida ao compilar meu aplicativo no Delphi recebi o erro "VCRuntime140.dll não encontrado". Reparei que o erro surgia bem na linha que carregava o PFX do certificado que está gravado no banco de dados para o componente (ACBrNFe1.Configuracoes.Certificados.DadosPFX). Mais uma vez o erro foi rapidamente sanado com a ajuda do Chat ACBr instalando o Runtime do Visual C Studio presente na pasta ACBr (DLL\Diversos\VC_redist.x86.exe). O Daniel me informou que a causa dessa dependência são as novas DLLs do OpenSSL 1.1.1.

Com isso o programa rodou normal e conseguir emitir as notas, MAS...

Eu coloquei o executável compilado nessa nova versão em um cliente e logo percebi uma certa lentidão que não existia anteriormente na hora que o usuário faz o login, analisei um pouco mais a fundo e descobri que essa lentidão ocorre na linha que carrega o PFX do certificado que está gravado no banco de dados para o componente (ACBrNFe1.Configuracoes.Certificados.DadosPFX). Antes carregava instantaneamente, agora leva uma média de 2 segundos. Esse cliente usa 5 máquinas com Windows 7 32 bits e 64 bits.

Resolvi então atualizar apenas para a revisão na qual foi corrigido o ACBrConsultaCNPJ (18549) e na mesma tal lentidão sumiu e voltou a carregar instantaneamente, além de também não receber o erro do  "VCRuntime140.dll não encontrado".

Enfim, não sei a origem disso e nem sei se mais alguém observou tal lentidão, mas resolvi reportar isso aqui no fórum.

Desde já agradeço a atenção de todos.

Editado por doidopb
  • Moderadores
Postado
45 minutos atrás, doidopb disse:

Enfim, não sei a origem disso e nem sei se mais alguém observou tal lentidão, mas resolvi reportar isso aqui no fórum.

Você testou com a revisão mais recente do ACBr, mas com as DLLs antigas da OpenSSL?

  • Curtir 1
Equipe ACBr BigWings
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr

 

 

  • Consultores
Postado

Verifique o que o BigWings mencionou acima. Pode ser o problema se seu aplicativo estiver usando as dlls antigas.

3 horas atrás, doidopb disse:

Ao fazer a atualização meus componentes foram para a revisão 19026

4 horas atrás, doidopb disse:

(18549) e na mesma tal lentidão sumiu e voltou a carregar instantaneamente

Entre as revisões 18549 e 19026 tem cerca de 500 versões. Se for possível você conseguir descobrir com um pouco mais de precisão em que revisão começou a haver lentidão, isso seria muito útil caso não for o problema das dlls.

  • Curtir 1

[]'s

Consultor SAC ACBr

Elton
Profissionalize o ACBr na sua empresa, conheça o ACBr Pro.

Projeto ACBr     Telefone:(15) 2105-0750 WhatsApp(15)99790-2976.

Um engenheiro de Controle de Qualidade(QA) entra num bar. Pede uma cerveja. Pede zero cervejas.
Pede 99999999 cervejas. Pede -1 cervejas. Pede um jacaré. Pede asdfdhklçkh.
  • Membros Pro
Postado
4 horas atrás, BigWings disse:

Você testou com a revisão mais recente do ACBr, mas com as DLLs antigas da OpenSSL?

Em um primeiro momento sim, versão de DLLs 1.0.2.13. 

Logo após me toquei disso e usei apenas as DLLs da versão 1.1.1, conforme até orientado nessa nova revisão em um arquivo TXT presente. Até os nomes das DLLs diferenciam na 1.1.1.

Infelizmente não senti nenhuma diferença.

1 hora atrás, EMBarbosa disse:

Verifique o que o BigWings mencionou acima. Pode ser o problema se seu aplicativo estiver usando as dlls antigas.

Entre as revisões 18549 e 19026 tem cerca de 500 versões. Se for possível você conseguir descobrir com um pouco mais de precisão em que revisão começou a haver lentidão, isso seria muito útil caso não for o problema das dlls.

Eu entendo que são muitas revisões para se ter uma idéia, mas achei pertinente reportar esse comportamento que eu percebi.

  • Consultores
Postado
59 minutos atrás, doidopb disse:

mas achei pertinente reportar esse comportamento que eu percebi

Sim. Agradecemos você ter relatado.

  • Curtir 2

[]'s

Consultor SAC ACBr

Elton
Profissionalize o ACBr na sua empresa, conheça o ACBr Pro.

Projeto ACBr     Telefone:(15) 2105-0750 WhatsApp(15)99790-2976.

Um engenheiro de Controle de Qualidade(QA) entra num bar. Pede uma cerveja. Pede zero cervejas.
Pede 99999999 cervejas. Pede -1 cervejas. Pede um jacaré. Pede asdfdhklçkh.
  • Fundadores
Postado
Em 17/02/2020 at 16:26, doidopb disse:

Logo após me toquei disso e usei apenas as DLLs da versão 1.1.1, conforme até orientado nessa nova revisão em um arquivo TXT presente. Até os nomes das DLLs diferenciam na 1.1.1.

O ACBr suporta ambas... 1.0.x e 1.1.1.x... mas se as DLLs da versão 1.1.1 estiverem na pasta, ele dará preferência a elas....

Você pode achar as DLLs da versão 1.0.x nessa pasta:
http://svn.code.sf.net/p/acbr/code/trunk2/DLLs/OpenSSL/1.0.2.21/x86/

a as DLLs da versão 1.1.1 nessa pasta:
http://svn.code.sf.net/p/acbr/code/trunk2/DLLs/OpenSSL/1.1.1.4/x86/

 

Experimente apagar as DLLs da versão 1.1.1 e deixar apenas as DLLs da versão 1.0.x, e verifique se não nota a lentidão...

Se desejar me enviar o PFX, em privado, posso fazer alguns testes com ele...

Consultor SAC ACBr

Daniel Simões de Almeida
O melhor TEF, é com o Projeto ACBr - Clique e Conheça
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr     Telefone:(15) 2105-0750 WhatsApp(15)99790-2976.

  • Membros Pro
Postado
9 minutos atrás, Daniel Simoes disse:

O ACBr suporta ambas... 1.0.x e 1.1.1.x... mas se as DLLs da versão 1.1.1 estiverem na pasta, ele dará preferência a elas....

Você pode achar as DLLs da versão 1.0.x nessa pasta:
http://svn.code.sf.net/p/acbr/code/trunk2/DLLs/OpenSSL/1.0.2.21/x86/

a as DLLs da versão 1.1.1 nessa pasta:
http://svn.code.sf.net/p/acbr/code/trunk2/DLLs/OpenSSL/1.1.1.4/x86/

 

Experimente apagar as DLLs da versão 1.1.1 e deixar apenas as DLLs da versão 1.0.x, e verifique se não nota a lentidão...

Se desejar me enviar o PFX, em privado, posso fazer alguns testes com ele...

Olá Daniel, tudo bom?

Já tinha efetuado esse teste e não houve diferença, também tentei com as DLLs que costumo usar (1.0.2.13) e também permaneceu a lentidão.

Com certeza lhe envio meu amigo e agradeço aí a atenção ao problema.

Abraços

  • Membros Pro
Postado
3 minutos atrás, Daniel Simoes disse:

Você nota lentidão, quando usando esse Certificado PFX, no Demo do ACBrNFe ?

Não efetuei o teste, mas posso fazer.

Na verdade assim que vi essa lentidão no cliente, eu testei em uma máquina virtual minha Windows 7 64 bits com o meu aplicativo e o certificado de outro cliente, para ter certeza que não era algo isolado. E também nesse cenário que eu montei com outro certificado/maquina a lentidão se fez presente.

Só frizando que o termo "lentidão" (1 à 2 segundos) é ao comparar como era antes (instântaneo).

Ainda quer que eu envie o certificado?

  • Fundadores
Postado
30 minutos atrás, doidopb disse:

Ainda quer que eu envie o certificado?

talvez seja melhor você testar no Demo do ACBr... pois se conseguir reproduzir o cenário nele... e me passar os passos para reprodução, eu conseguirei reproduzir o problema aqui...

  • Curtir 1
Consultor SAC ACBr

Daniel Simões de Almeida
O melhor TEF, é com o Projeto ACBr - Clique e Conheça
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr     Telefone:(15) 2105-0750 WhatsApp(15)99790-2976.

  • Membros Pro
Postado

Olá Daniel,

Testei aqui... Compilei o Demo na versão antiga (18549) e na versão nova (19026) citadas acima.

Observei que o Demo do ACBr não contempla o comando DadosPFX que eu uso, e sim o ArquivoPFX.

No Demo a lentidão apareceu na versão nova e na antiga ficou normal, assim como no meu programa, mas a lentidão apareceu em outro ponto.

Na linha ArquivoPFX não ocorre lentidão, mas logo em seguida se eu tentar usar um dos botões de informações do certificado, por exemplo o Data de Validade, leva cerca de 1 segundo para exibir a mensagem, isso na versão nova, já na antiga é instantâneo. Depois dessa primeira lentidão fica normal a velocidade (instantâneo) se eu tentar por exemplo exibir a Data de Validade novamente.

Eu observei esse comportamento também no meu aplicativo, na primeira vez que é executado a linha do DadosPFX tenho a lentidão dos 2 segundos, mas com o programa já em memória se eu executar novamente esse comando a velocidade fica normal (instantânea).

Agora usando o Demo, observo algo em comum entre ele e o meu programa na hora da "lentidão".

Sabemos que se eu não possuir o RunTime do Visual Studio C receberei o erro "VCRuntime140.dll não encontrado". Esse erro no meu programa aparecia exatamente na linha do DadosPFX onde noto a lentidão, antes de eu instalar o Runtime do Visual Studio C.

Agora testando o ACBrDemo na versão nova (19026), com as DLLs OpenSSL antigas (1.0.2.13), em uma VM Windows 7 32 bits esse erro não apareceu e apresentou a lentidão. Logo em seguida coloquei as DLLs novas (1.1.1.4) para conferir se sumia a lentidão e esse erro simplesmente surgiu, bem na hora que eu cliquei para ver a Data de Validade (onde surge a lentidão no Demo) e apesar do erro a validade foi exibida, ao clicar novamente no botão a validade foi exibida instântaneamente e sem erro.

Enfim, coincidentemente a lentidão é na hora que o componente tenta usar essas DLLs do Visual Studio, que você disse ser necessária para o OpenSSL 1.1.1, pode ser algo aí.

Estamos falando de tempos irrelevantes, 2 e 1 segundos, não é nada grave... Mas não pude deixar de observar isso. Se achar válido tenta reproduzir aí e vê se nota isso também.

Abraços

  • Fundadores
  • Solution
Postado

Pode ser que o tempo que você nota, seja da Carga da DLL do OpenSSL... que antes era Estática (no Delphi) e agora é Dinâmica...

Ou seja, antes ele tentava ler a DLL assim que o EXE fosse executado... e se a DLL não existisse, um Erro de execução era disparado, abortando o programa,...

Com a Carga dinâmica, as DLLs serão carregadas, apenas quando o primeiro método que exija a DLL for invocado..  e não há erro na inicialização do programa, se DLL não existir

Lembrando que a Carga da DLL ocorrerá apenas 1 vez, após o inicio da aplicação, e não toda vez que algum método for invocado

  • Curtir 2
Consultor SAC ACBr

Daniel Simões de Almeida
O melhor TEF, é com o Projeto ACBr - Clique e Conheça
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr     Telefone:(15) 2105-0750 WhatsApp(15)99790-2976.

×
×
  • Criar Novo...

Informação Importante

Colocamos cookies em seu dispositivo para ajudar a tornar este site melhor. Você pode ajustar suas configurações de cookies, caso contrário, assumiremos que você está bem para continuar.