Lentidão no ADempiere via WebStart - ADempiere, ADempiereLBR & Compiere
Lentidão no ADempiere via WebStart
Mensagempor dvivencio » Qui Abr 26, 2012 7:37 pm
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?
Re: Lentidão no ADempiere via WebStart
Mensagempor ralexsander » Qui Abr 26, 2012 8:15 pm
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.
Mensagempor dvivencio » Qua Mai 02, 2012 11:23 am
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.
Mensagempor limafricke » Qua Mai 30, 2012 2:07 pm
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 ?