Senhores,
Tenho percebido em vários clientes uma lentidão absurda no PVA (SPED EFD). Hoje parei para analisar com mais calma e percebi o seguinte:
* Por mais que a máquina tenha vários núcleos, o PVA aparentemente não usa threads, e um ÚNICO núcleo é utilizado;
* Durante a segunda validação do arquivo o PVA começa a usar o banco de dados (MySQL), e percebo que esse ÚNICO núcleo que o PVA usa ainda é compartilhado entre o processo do PVA e do MySQL; Preciso pesquisar mais um pouco, mas pelo que entendi, quando o PVA inicializa o MySQL, eles acabam compartilhando o mesmo núcleo; (se o PVA ficasse em um núcleo, e o MySQL em outro, já melhorava significativamente o desempenho).
* Tentei vários parâmetros de otimização do JAVA (JAVA_OPTS, etc), mas aparentemente o PVA sobrescreve essas variáveis de ambiente, o que não causa mudança alguma;
* Testei o PVA no Linux, e percebi o mesmo problema;
Para terem ideia do problema, tenho um cliente com um Dell, 8 núcleos, discos SAS 15K RPM, e o processo de validação demora mais de 30 minutos... claro que o tamanho do MOVIMENTO da empresa influencia, mas a máquina não usa 20% dos recursos disponíveis durante a validação (o PVA não usa todos os núcleos, etc).
Vejam:
Nesse cliente em específico, a máquina é simples, só tem 2 núcleos... observe que o JAVA e o MYSQL usam exatamente UM núcleo (50%).. mesmo a máquina tendo recurso sobrando (36% cpu), acaba não sendo utilizado. Em um servidor com 8 núcleos, o problema é igual.
Levando em consideração que um processador hoje em dia tem em média 2.5GHZ, para ter seu PVA um pouco mais rápido, teria que verificar a velocidade de cada núcleo, e não só a quantidade... Exemplo: um processador de 2.5 GHZ com 8 núcleos seria mais lento para o PVA que um de 3.0GHZ com 2 núcleos, pois o sistema acaba usando um único núcleo.
Acredito ser interessante compartilhar com os amigos essa minha dúvida, pois certamente, muitos como eu estão sofrendo com essa demora.
Jorge, é possível passar essas informações para o pessoal técnico do PVA?
Me corrijam se eu estiver errado.
Forte abraço a todos.
Welkson Renny de Medeiros
Natal/RN
Tags: PVA, desempenho, lentidão
Permalink Respondida por Welkson Renny de Medeiros em 18 abril 2011 at 23:54
Acabei não informando a versão... trata-se do SPED EFD build 15.
Todos os testes, tanto no Linux quanto Windows, foram efetuados em ambientes 32 bits.
Permalink Respondida por Helienilson Augusto Morais em 19 abril 2011 at 0:27
Prezado colega,
Minha maquina, é bem mais antiga do que seu micro, porem a velocidade da minha é rapida, os meus arquivos do SPED, com a validação não passam de 05 Minutos, ´sem considerar que o volume da minha empresa é de quase 4.000,00 NFE ( entradas e saidas ), sugiro que verifique a sua conexão.
OBS.: a minha conexao é de 1 Mega.
Permalink Respondida por Welkson Renny de Medeiros em 19 abril 2011 at 9:55
Helienilson,
A internet não influencia nesse processo.
É um processo totalmente local.
O único momento que o PVA usa internet durante a "validação" é quando importa as tabelas.
A minha internet por exemplo é 3MB de download, e 2 de upload.
A ideia desse post não é discutir computador mais rápido ou mais lento, é questionar ao pessoal do SERPRO se existe a possibilidade da aplicação aproveitar melhor os recursos do computador (implementar a validação usando threads, o processo mysql não ficar no mesmo núcleo do PVA, etc).
Eu sei que a escolha de qual núcleo será utilizado para determinada aplicação fica a nível de Sistema Operacional... mas a impressão que dá é que como o PVA "carregou" o MySQL, o mesmo acaba compartilhando o mesmo núcleo (processo pai -> processo filho).
Um outro detalhe, Nota Fiscal é o menor dos meus problemas... aqui geramos CUPOM FISCAL... um dos clientes tem 35 PDV's... é MUITA coisa. Claro que em um cliente desse porte o SPED dele será mais lento para validar que em um cliente pequeno... mas nesse caso em específico em tenho um ótimo servidor, e durante a validação os recursos da máquina são subutilizados.
Bem-vindo a
SPED Brasil
© 2012 Criado por Aliz Inteligência Sustentável.
Ativado por
