Página 1 de 1

Lentidão no ADempiere via WebStart

Enviado: Qui Abr 26, 2012 7:37 pm
por dvivencio
Olá, pessoal.

Tenho uma implantação do Adempiere na organização onde trabalho, operando há cerca de um ano. Apesar de funcionalmente o sistema nos atender, sempre observamos uma certa lentidão na execução do aplicativo, a cada tentativa de abrir uma janela entre clicar na entrada no menu e a janela correspondente abrir havia um atraso entre 30 a 60 segundos. Isso dificultava tanto a utilização por parte do usuário como a execução de customizações via Dicionário de Aplicação. Como temos alguns problemas de lentidão na rede que limitam o desempenho, acreditávamos que o problema se devia a isso.

Como o problema se agravou recentemente, resolvi investigar e descobri que ele só se manifestava se utilizasse através de WebStart. Habilitando o trace, observei que ele tentava localizar um arquivo de nome "Adempiere1.jar", que não existe no servidor. Observando o build.xml que o RUN_silentsetup.sh utiliza, encontrei a raiz do problema.

Para gerar o arquivo ADempiere.jar o script cria um arquivo chamado Adempiere1.jar, resultado da união dos seguintes JARs: customization.jar, packages.jar, patches.jar, posterita.jar e AdempiereOriginal.jar (o Adempiere.jar, renomeado durante o processo de build). O problema está nessa linha:
<jar jarfile="lib/Adempiere1.jar" index="yes" duplicate="preserve">

Como ele gera o arquivo com o nome de Adempiere1.jar (em outro ponto ele é renomeado para Adempiere.jar) e essa opção em vermelho gera um arquivo INDEX.LIST na pasta META-INF dentro do Jar, o índice gerado referencia o Adempiere1.jar. A função desse índice é acelerar o carregamento de classes, porém nesse caso gerou o efeito exatamente oposto, pois o WebStart ficava tentando buscar o tal arquivo por vários segundos antes de desistir e continuar com a execução normal. A impressão que tive foi de que uma ideia inocente de trazer ganhos de desempenho acabou tendo o efeito oposto por não haver um conhecimento mais amplo da função de indexação de JARs. Pra quem quiser entender melhor a função do INDEX.LIST e sua (des)necessidade: http://javahowto.blogspot.com.br/2006/0 ... index.html

Após alterar a opção para "no" (e a remoção de algumas linhas desnecessárias por conta da mudança) e rodar novamente o RUN_silentsetup.sh o desempenho da aplicação aumentou significativamente, eliminando essas lentidões que dificultavam a utilização do sistema.

Como posso contribuir com essa alteração?

Atenciosamente,
Diego

Re: Lentidão no ADempiere via WebStart

Enviado: Qui Abr 26, 2012 8:15 pm
por ralexsander
Olá Diego,

Primeiramente, obrigado pela explicação detalhada do seu problema. Eu nunca reparei este problema de lentidão nos nossos clientes, vou tentar fazer alguns testes aqui.

A melhor maneira de contribuir é criando um ticket no JIRA (https://adempiere.atlassian.net/), pois assim você pode acompanhar quando a sua contribuição entrará no ar, mas se preferir eu posso criar o ticket mantendo os créditos para a sua contribuição.

Att!

Re: Lentidão no ADempiere via WebStart

Enviado: Qua Mai 02, 2012 11:23 am
por dvivencio
Olá, Ricardo.

Cadastrei o ticket no JIRA: https://adempiere.atlassian.net/browse/ADEMPIERE-82

Como disse, o problema inicialmente foi atribuído à rede, já que acessos locais tendiam a ser bem mais rápidos. Acredito que essas tentativas de acesso que o webstart faz também são influenciadas pela rede, por isso os resultados variavam e nem sempre . Observei que ele tenta pelo menos umas 30 vezes localizar o arquivo errado antes de desistir e continuar a execução.

Obrigado!

Diego

Re: Lentidão no ADempiere via WebStart

Enviado: Qua Mai 30, 2012 2:07 pm
por limafricke
Olá Diego,


Verifiquei sobre seu relato e o possível problema.
Lhe pergunto, você está utilizando o sistema via rede local? via internet, ou em uma ligação via rádio etc.. onde as métricas de rede geralmente são mais lentas ?

Abraço

Lucas