Solicitar diagnóstico gratuito Chamar no WhatsApp

Sankhya lento: causas (Java, GC, I/O) e como resolver

Sankhya lento: causas reais (Java, GC, banco, I/O) e como resolver

Profissional trabalhando no ERP da empresa

Sankhya lento é frequentemente causado por Java heap subdimensionado provocando Garbage Collection (GC) pausas frequentes, cada Full GC pode paralisar o servidor por 2 a 30 segundos dependendo do tamanho do heap. O segundo fator mais comum é I/O de disco com alta latência no banco de dados (Oracle ou SQL Server), que amplifica os efeitos de queries ineficientes que rodam bem em ambientes com storage rápido.

Por que o Sankhya fica lento

Java heap subdimensionado causando Full GC

O Sankhya roda em JVM (Tomcat ou JBoss/WildFly). Com heap insuficiente, a JVM executa Full GC com frequência, pausas que bloqueiam todas as threads da aplicação por segundos. O sintoma é lentidão intermitente acompanhada de picos de CPU.

I/O de banco com alta latência

Queries analíticas e relatórios do Sankhya geram leituras intensas no banco. Com storage compartilhado e latência acima de 5 ms, cada query demora proporcionalmente mais, e o efeito se multiplica em relatórios que executam dezenas de queries.

Banco de dados sem estatísticas atualizadas

Oracle e SQL Server usam estatísticas de tabelas para gerar planos de execução eficientes. Com estatísticas desatualizadas em tabelas grandes do Sankhya (TGFCAB, TGFITE), o otimizador escolhe planos ruins que fazem full table scan onde deveria usar índice.

Como resolver o Sankhya lento

Dimensionar Java heap corretamente: -Xms e -Xmx

Configure -Xms (heap inicial) e -Xmx (heap máximo) com valores iguais para evitar redimensionamento dinâmico. Para ambientes com até 50 usuários, -Xmx8g é um ponto de partida; monitore o uso real com jstat ou VisualVM e ajuste.

Usar G1GC ou ZGC para reduzir pausas

Troque o GC padrão pelo G1GC (-XX:+UseG1GC) ou ZGC (-XX:+UseZGC no Java 15+). O G1GC mantém pausas abaixo de 200 ms mesmo com heaps grandes, diferença crítica para a experiência do usuário do Sankhya.

Storage NVMe dedicado para o banco

Migrar o banco para NVMe dedicado reduz a latência de I/O de dezenas de milissegundos para abaixo de 500 µs, impacto imediato nas queries mais lentas do Sankhya sem nenhuma mudança de código.

Atualizar estatísticas e revisar índices das tabelas críticas

Execute UPDATE STATISTICS (SQL Server) ou GATHER STATS (Oracle) nas tabelas de cabeçalho e itens de pedido/nota fiscal periodicamente. Verifique os índices das tabelas TGFCAB e TGFITE com o DBA, índices ausentes são causa comum de lentidão em consultas de vendas.

Quando a Boreal faz sentido

A Boreal Tecnologias oferece diagnóstico gratuito de ambientes Sankhya, analisando o heap da JVM, GC logs e métricas de I/O do banco. Nossa cloud privada no Brasil fornece VMs com NVMe dedicado, vCPU sem overcommit e SLA 99,99% em reais.

Perguntas frequentes

Qual o tamanho correto de Java heap para o Sankhya?

Não existe um valor único, depende do número de usuários, módulos ativos e volume de dados. O ponto de partida é 8 GB para até 50 usuários. Monitore o uso real com jstat -gcutil a cada 5 segundos durante pico de uso e ajuste -Xmx até que o GC overhead fique abaixo de 5% do tempo total.

O Sankhya lento é problema da aplicação ou da infraestrutura?

Depende do sintoma. Lentidão intermitente sincronizada com logs de GC é problema de heap/JVM, infraestrutura. Lentidão específica em uma tela ou relatório geralmente é query ineficiente, aplicação/banco. As duas causas coexistem frequentemente; o diagnóstico correto requer análise de GC logs e wait statistics do banco simultaneamente.

Sankhya roda melhor com Oracle ou SQL Server?

Ambos são suportados e performam de forma similar quando bem configurados. O Oracle tem vantagem em análises complexas com grandes volumes; o SQL Server tem menor custo de licença e mais profissionais disponíveis no Brasil. A maioria das empresas que migra do Oracle para SQL Server não percebe diferença de performance após otimização de queries e índices.

Como identificar se o problema do Sankhya é GC pause?

Habilite o GC log no start do Tomcat com -Xloggc:/path/gc.log -XX:+PrintGCDetails -XX:+PrintGCDateStamps. Analise os logs com ferramentas como GCEasy ou GCViewer. Full GC acima de 1 vez por minuto ou pausas acima de 1 segundo são sinal claro de heap subdimensionado.

Sua operação merece uma infraestrutura à altura.

Receba um diagnóstico estratégico gratuito e descubra o que está limitando performance, estabilidade e escala hoje.

Sem compromisso. Resposta em até 15 minutos em horário comercial.