Lentidão no ADempiere via WebStart


#1

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:

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: 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


#2

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 (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!


#3

Olá, Ricardo.

Cadastrei o ticket no JIRA: 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


#4

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


Squid/IPTables: TCP_MISS/404 - Adempiere1.jar