Tela que congela no meio do pedido, rotina de fechamento que atravessa a madrugada, relatório que ninguém mais espera terminar: Protheus lento é um dos chamados mais comuns que recebemos no plantão. E quase sempre a investigação começa no lugar errado. Este guia mostra como isolar a causa entre as três camadas do ERP e o que olhar em cada uma, na ordem certa.
As três camadas onde a lentidão se esconde
O Protheus é um sistema de três camadas, e cada uma tem a sua assinatura de lentidão:
- AppServer (a aplicação): lentidão generalizada, em todas as rotinas, geralmente com CPU ou memória no talo no servidor de aplicação.
- DBAccess (o tradutor): travamentos em rajada, conexões que se acumulam, rotinas que ficam presas em espera sem o banco estar sobrecarregado.
- Banco de dados (SQL Server ou Oracle): rotinas específicas lentas, fechamento demorado, bloqueios entre usuários. É aqui que mora a causa na maioria dos casos que atendemos.
Comece pelo banco de dados: é o suspeito número 1
Índices e estatísticas desatualizadas
As tabelas do Protheus (SB1, SC5, SE1 e companhia) crescem todos os dias, e o otimizador do banco decide os planos de execução com base nas estatísticas. Estatística velha significa plano ruim, e plano ruim significa a mesma rotina que rodava em segundos levando minutos. Manutenção de índices e atualização de estatísticas é a primeira verificação, antes de culpar hardware.
Encontre as queries mais pesadas
No SQL Server, o próprio banco entrega o ranking do que mais consome tempo:
SELECT TOP 10
qs.execution_count,
qs.total_elapsed_time / qs.execution_count AS tempo_medio_us,
SUBSTRING(st.text, 1, 200) AS trecho_sql
FROM sys.dm_exec_query_stats qs
CROSS APPLY sys.dm_exec_sql_text(qs.sql_handle) st
ORDER BY qs.total_elapsed_time DESC;
No Oracle, o caminho equivalente é a V$SQL:
SELECT sql_id,
executions,
ROUND(elapsed_time / 1000000, 1) AS segundos_total
FROM v$sql
ORDER BY elapsed_time DESC
FETCH FIRST 10 ROWS ONLY;
Com o SQL_ID em mãos, o passo seguinte é ler o plano de execução. Temos um guia completo de como interpretar o plano de execução no Oracle e um script pronto (showplan.sql) que cruza plano e eventos de espera. Para SQL Server, veja como capturar queries lentas com Extended Events e Query Store.
Bloqueios: quando um usuário trava a empresa inteira
Rotinas longas do ERP seguram locks em tabelas centrais, e todo mundo que precisa delas entra na fila. O sintoma clássico: o sistema fica lento para todos de repente e volta ao normal sozinho quando alguém termina (ou desiste). Monitorar sessões bloqueadoras e ajustar a rotina que segura o lock resolve mais casos de Protheus lento do que upgrade de servidor.
DBAccess: o elo que quase ninguém olha
- Versão do DBAccess muito atrás da release do Protheus gera incompatibilidades e lentidão silenciosa
- Pool de conexões esgotado faz rotinas esperarem vaga, com o banco ocioso
- O monitor do DBAccess mostra as queries em execução em tempo real: é o jeito mais rápido de ver o que o ERP está pedindo ao banco naquele momento
- Rede entre AppServer, DBAccess e banco precisa de latência baixa: cada milissegundo se multiplica por milhões de idas e voltas
AppServer e infraestrutura
Se banco e DBAccess estão saudáveis, olhe a aplicação e a infra: balanceamento entre slaves do AppServer, quantidade de threads por serviço, memória disponível, storage com latência alta e antivírus escaneando diretórios do ERP são os culpados mais frequentes. Em ambientes virtualizados, vale conferir se o host não está com CPU sobrecomprometida.
Checklist rápido do Protheus lento
- A lentidão é geral ou em rotinas específicas?
- Começou de repente (mudança recente?) ou piorou aos poucos (crescimento)?
- Estatísticas e índices do banco estão em dia?
- Quais são as 10 queries mais pesadas agora?
- Existem sessões bloqueadas ou bloqueadoras?
- O DBAccess está atualizado e com pool folgado?
- CPU, memória e latência de disco dos servidores estão saudáveis?
- O problema coincide com backup, integração ou job pesado?
Quando chamar um especialista
Se o checklist acima não fechou o diagnóstico, ou fechou e ninguém no time tem braço para atacar a causa, é hora de trazer quem faz isso todos os dias. A frente de consultoria e sustentação de Protheus da Furushima cobre exatamente esse ciclo: assessment do ambiente, tuning do banco por eventos de espera com resultado medido, e monitoramento contínuo para a lentidão não voltar de fininho.
Protheus lento é sempre culpa do banco de dados?
Não sempre, mas é o lugar mais provável: na maioria dos atendimentos a causa raiz está em estatísticas desatualizadas, índices ruins, queries pesadas ou bloqueios. Por isso o diagnóstico começa pelo banco, depois DBAccess e por fim aplicação e infraestrutura.
Trocar o servidor resolve a lentidão do Protheus?
Raramente. Hardware novo mascara o problema por alguns meses e a lentidão volta, porque a causa costuma ser lógica: plano de execução ruim, falta de índice, bloqueio ou configuração. Diagnóstico antes de investimento.
Quanto tempo leva um diagnóstico de performance?
Um assessment típico de ambiente Protheus leva poucos dias entre coleta e relatório, e sai com um plano de ação priorizado: o que resolve mais lentidão primeiro, com esforço e risco de cada item.