ERP - Performance/Lentidão/Travamentos - Quais são as orientações gerais para otimização de Performance
Dúvida
Quais são as orientações gerais para otimização de Performance?
Solução
Abaixo seguem as orientações gerais para otimização de Performance.
1. Configuração de Carregamento de Registros em Telas de Pesquisa (AutoShow)
Você deve configurar o sistema para que as telas de pesquisa não carreguem dados ao abrir a tela. Desta forma, a navegação entre telas será otimizada, reduzindo acessos sequenciais a tabelas de sistema. Para tabelas com grande volume de informação, a melhoria será significativa.
A configuração de carregamento de registros ao mostrar a tela está disponível através do botão Configurar de qualquer tela de pesquisa de registros. A tela Configurações da pesquisa que é aberta ao clicar no botão apresentará o parâmetro 'Carregar registros ao mostrar a tela', conforme exemplo abaixo:
A forma mais rápida de fazer esse processo é executando um comando na base de dados. Você deve executar esse comando quando nenhum usuário estiver utilizando o sistema.
Motivo: quando um usuário sai do sistema, o sistema grava as informações de configuração relacionada as telas de pesquisa na base de dados, substituindo todas as informações que tenham sido alteradas (mesmo que via banco de dados).
1.1. Abra algum aplicativo de acesso ao banco de dados (seja CBDS ou qualquer outro) e faça a conexão à base de dados;
1.2. Execute o comando abaixo:
UPDATE R999PSQ SET AUTSHO=0
Importante
- O comando alterará a parametrização de todas as telas de pesquisa para todos os usuários. Caso necessário especificar alguns usuários/telas específicos para manter a configuração, você deve alterar o comando acima fazendo filtros WHERE no comando com base nos campos NOMPSQ e CODUSU.
- Lembre-se que o NOMPSQ equivale ao código da tela de pesquisa que fica no rodapé da tela quando ela é aberto, conforme exemplo na imagem abaixo:
Para conferir as telas que estejam com a configuração ativa (o que não é recomendável para a Performance), o comando abaixo poderá ser executado:
SELECT COUNT(*) FROM R999PSQ WHERE AUTSHO=1
2. Configuração de Performance da Tela
2.1. Não carregar registros ao abrir a tela
Você deve configurar o sistema para que as telas padrões de cadastros (exemplo: Produtos, Clientes, Fornecedores) não carreguem dados ao abrir a tela.
As orientações descritas abaixo terão efeito para todos os usuários e todas as telas.
2.1.1. Acesse a tela F075PRO - Cadastros / Produtos e Serviços / Produtos / Individual
2.1.2. Clique com botão direito do mouse e acesse a opção 'Configurações de performance da tela':
2.1.3. Selecione as opções:
Na seção Abrir: 'Em branco (edição de chave)'
Na seção Salvar configuração: 'Para todos os usuários' e 'Para todas as telas do sistema'
2.1.4. Clique em OK.
2.2. Configurações adicionais de tela para tratativas de problemas de Performance
As configurações de Performance das telas do sistema podem ser muito úteis para resolver problemas pontuais de lentidão em carregamento das próprias telas (abertura da tela) e de carregamento de dados nas telas.
As configurações podem e devem ser validadas em cada ambiente, pois cada ambiente (Seja ele Oracle, SQLServer ou Postgres) pode ter um comportamento diferente para cada parametrização.
Desta forma, não existe um padrão exato que possa ser indicado, mas o mais importante é que esse tema seja foco de análise e validação, principalmente em momentos de reporte de problemas de Performance em telas (abertura/carregamento de registros).
3. Parâmetros globais
Importante
Abaixo constarão informações sobre alguns parâmetro globais que não estão relacionados diretamente com rotinas de módulos específicos do sistema Gestão Empresarial | ERP. Lembre-se de que:
- Existem diversos outros parâmetros globais que podem impactar me Performance do sistema e que estejam citadas em outros artigos/documentações;
- A alteração dos parâmetros exige reinicio do sistema (e inclusive do Middleware Senior) para correta efetividade em todas as sessões abertas do sistema.
3.1 Parâmetro LisVarReg
Quando habilitado o parâmetro global 'LisVarReg', esse alimentará uma variável que estará disponível em todos os identificadores de regras do sistema. Esta variável de regra se chama 'ListaVariaveis', e o seu conteúdo será a lista de campos disponibilizados no identificador de regras em questão. Esse parâmetro deve ser utilizado apenas para apoio no desenvolvimento de regras e/ou depuração das mesmas. Ele não deve estar habilitado em ambiente de produção para uso cotidiano.
Desta forma, siga os passos abaixo para desabilitá-lo
3.1.1. Acesse a tela F000PGS - Cadastros / Identificadores e parâmetros / Parâmetros Globais;
3.1.2. Procure o parâmetro 'LisVarReg' e confirme que ele está com o valor 'N' definido. Se não estiver, efetue a alteração;
3.1.3. Clique no botão Processar.
3.1.4. Caso tenha havido necessidade de alteração do parâmetro, o Middleware Senior deverá ser totalmente reiniciado, bem como todos os usuários devem sair e entrar no sistema novamente.
Observação
Para verificar o valor do parâmetro através de select, utilize o select abaixo:
SELECT * FROM E000PXF WHERE IDFFRM='$PARAMETROS_GLOBAIS_SAPIENS$' AND CMPFRM='LisVarReg'
3.2 Parâmetro AtiGerLog
Quando habilitado o parâmetro global 'AtiGerLog', haverá registros de Logs de alterações na tabela E000LOG (que pode ser consultada através da tela F000LOG).
Em ambientes onde haja grande fluxo de alterações em cadastros (Exemplo: integração com Marketplaces e E-commerces onde o fluxo de criação e alteração de cadastros é muito grande), esse parâmetro pode ser desativado para melhoria de Performance.
A desativação do parâmetro acarretará na não gravação de Logs dessas alterações.
Em ambiente de Homologação é possível validar se a desativação do parâmetro terá efetividade em diminuição de tempo de processamento de processos que incluem ou alteram cadastros.
Siga os passos abaixo para desabilitá-lo:
3.2.1. Acesse a tela F000PGS - Cadastros / Identificadores e parâmetros / Parâmetros Globais;
3.2.2. Procure o parâmetro 'AtiGerLog' e confirme que ele está com o valor 'N' definido. Se não estiver, efetue a alteração;
3.2.3. Clique no botão Processar.
3.2.4. Caso tenha havido necessidade de alteração do parâmetro, o Middleware Senior deverá ser totalmente reiniciado, bem como todos os usuários devem sair e entrar no sistema novamente.
Observação
Para verificar o valor do parâmetro através de select, utilize o select abaixo:
SELECT * FROM E000PXF WHERE IDFFRM='$PARAMETROS_GLOBAIS_SAPIENS$' AND CMPFRM='AtiGerLog'
3.3 Parâmetro UtiViaCep
Quando habilitado o parâmetro global 'AtiGerLog', haverá consulta de CEPs no ViaCep (verifique a Documentação do Parâmetro para maiores informações).
Em ambientes onde haja bloqueios para acessos externos ao ambiente, a ativação desses parâmetro poderá impactar o processo de Cadastro de entidades que façam acionamento da Consulta ao ViaCep.
Nestes casos, é importante validar a correta liberação de acesso à URL do ViaCep.
Em caso de necessidade de desativação do parâmetro para efeito de testes ou ainda de fato mantê-lo desativado, siga os passos abaixo para desabilitá-lo:
3.3.1. Acesse a tela F000PGS - Cadastros / Identificadores e parâmetros / Parâmetros Globais;
3.3.2. Procure o parâmetro 'UtiViaCep' e confirme que ele está com o valor 'N' definido. Se não estiver, efetue a alteração;
3.3.3. Clique no botão Processar.
3.3.4. Caso tenha havido necessidade de alteração do parâmetro, o Middleware Senior deverá ser totalmente reiniciado, bem como todos os usuários devem sair e entrar no sistema novamente.
Observação
Para verificar o valor do parâmetro através de select, utilize o select abaixo:
SELECT * FROM E000PXF WHERE IDFFRM='$PARAMETROS_GLOBAIS_SAPIENS$' AND CMPFRM='UtiViaCep'
3.4 Parâmetro AtuEmpFia
Quando habilitado o parâmetro global 'AtuEmpFia', haverá a atualização do campo E099USU.EmpAti e do campo E099USU.FilAti sempre que for feito o login de algum usuário no sistema, seja via Tela ou seja na execução de algum WeBService.
Em ambientes onde haja a execução de muitas integrações que forcem a troca frequente de Empresa e Filial para um mesmo usuário de integração, pode ser necessária a desativação deste parâmetro global, para evitar o acesso e a concorrência pelo registro da tabela E099USU.
Importante
A desativação deste parâmetro afetará todos os usuários do sistema. A partir do momento que o processo seja desativado, o sistema não salvará mais a Empresa e Filial ativa (que é populada conforme a última Empresa/Filial que o usuário acessou). Desta forma se, por exemplo, o usuário entrar na Empresa 10, Filial 1 e o parâmetro AtuEmpFia estiver desativado, o sistema não salvará essa informação na tabela E099USU. Quando o usuário sair do sistema e entrar novamente, ele pode acabar não estando logado nessa mesma Empresa/Filial.
Em caso de necessidade de desativação do parâmetro para efeito de testes ou ainda de fato mantê-lo desativado, siga os passos abaixo para desabilitá-lo:
3.3.1. Acesse a tela F000PGS - Cadastros / Identificadores e parâmetros / Parâmetros Globais;
3.3.2. Procure o parâmetro 'AtuEmpFia' e confirme que ele está com o valor 'N' definido. Se não estiver, efetue a alteração;
3.3.3. Clique no botão Processar.
3.3.4. Caso tenha havido necessidade de alteração do parâmetro, o Middleware Senior deverá ser totalmente reiniciado, bem como todos os usuários devem sair e entrar no sistema novamente.
Observação
Para verificar o valor do parâmetro através de select, utilize o select abaixo:
SELECT * FROM E000PXF WHERE IDFFRM='$PARAMETROS_GLOBAIS_SAPIENS$' AND CMPFRM='AtuEmpFia'
4. Configurações no SeniorConfigCenter
4.1. Acesse o SeniorConfigCenter;
4.1.1. Na opção Banco de Dados / Gestão Empresarial (ERP), acione o botão Avançado;
4.1.2. Valide que a opção 'Sempre buscar a data e hora do banco de dados (desotimizado)' esteja desmarcado. Abaixo segue print dessa configuração disponível nas configurações de Oracle e SQLServer;
Oracle
SQLServer
4.1.3. Caso o seu banco de dados seja Microsoft SQLServer, os campos 'Utiliza ROWLOCK para travamento de registros' e 'Utiliza comportamento para performance do driver de banco' devem estar marcados.
4.1.2. Na opção Opções de segurança / Formas de logon por tipo de acesso, revise as configurações de login de cada tipo de acesso.
Nesse tema, é importante que você valide qual a forma adequada de login para cada tipo de acesso. A utilização de uma autenticação incorreta poderá causar problemas de performance. Exemplo de um cenário onde a parametrização inadequada poderá causar perda de performance em processo:
- Utiliza-se o sistema em um ambiente Cloud com autenticação LDAP;
- A autenticação LDAP depende de uma conectividade com um servidor On-Premise do Cliente;
- Esse canal de comunicação entre o ambiente Cloud e On-Premise para autenticação LDAP é realizado via uma VPN;
- A comunicação entre os servidores para fazer a autenticação varia, em média, entre 15 a 40 segundos;
- A autenticação utilizada para Webservices no SeniorConfigCenter é 'Logon com validação do usuário via LDAP';
- Neste cenário, cada chamada de WebService terá um atraso de 15 a 40 segundos para ser executado, pois é o tempo do processo de validação de usuário/senha na chamada de cada requisição de WebService. Neste caso, a orientação para aumentar a performance para esse processo é alterar a autenticação de WebService para 'Logon proprietário Senior'.
Importante
Qualquer alteração realizada no SeniorConfigCenter só terá efeito após você reiniciar todo o ambiente (estações e Middleware).
5. Logs ativados que podem impactar em rotinas
Logs do sistema são muito importantes para análises de situações que possam ocorrer. No entanto, em alguns momentos a ativação de Logs (principalmente logs de texto, que consomem recursos de leitura e escrita em disco) podem impactar negativamente a performance de rotinas. Portanto, abaixo seguem orientações sobre desativação de Logs de texto que podem influenciar rotinas de forma abrangente.
Importante
Utilize essas orientações de desativação como um ponto de validação para possível melhoria de performance em uma rotina que esteja apresentando lentidão. Caso não haja diferença de performance na rotina analisada, os Logs podem continuar ativos (principalmente os Logs do Middleware Senior, porque eles ajudam muito na análise de situações). Sendo assim, não tome como verdade absoluta de que os Logs devem ser sempre desativados para que que a performance do sistema esteja adequada. Se você identificar diferença significativa na execução de alguma rotina quando os Logs estão habilitados, você poderá coletar essas evidências (inclusive os Logs que são gerados) e entrar em contato com seu Canal de Atendimento para maiores informações/orientações a respeito disso
5.1. Logs adicionais de execução (parâmetros -log, -callstack e -devtools)
Esses logs são gerados quando na linha de comando de inicialização do sistema esses parâmetros são definidos.
Exemplo de um atalho do sistema com os Logs habilitados:
Quando o sistema é aberto com esses parâmetros, na barra de título do sistema os parâmetros são mencionados (exceto o -devtools que não é exibido)
Além disso, logs de texto adicionais são criados em pastas do sistema. Exemplo abaixo, do log que é criado devido ao parâmetro -log habilitado:
Através do menu Recursos / Novo Sistema é possível selecionar parâmetros de inicialização pré-definidos para uma nova instância do sistema, ou ainda definir parâmetros manualmente (sem precisar manipular o atalho de acesso ao sistema)
Então neste caso a orientação é realizar testes e validações de performance sem ter esses logs habilitados.
5.2. Logs do Senior Middleware
Os Logs do Middleware são configurados/ativados pelo SeniorConfigCenter, dentro da opção Middleware / Logs de execução, conforme print de exemplo abaixo:
Esses Logs afetam apenas as execução de processos que são de fato executados no Senior Middleware (WebServices, Processos Agendados, BrowserAccess, WindowsAccess, SeniorSID, SapiensWeb), não impactando execução que sejam efetuadas no modelo de conexão Cliente-Servidor.
No entanto, os Logs do Middleware estando habilitados podem acabar ativando logs adicionais que seriam habilitados quando os parâmetros -log, -callstack e -devtools estivessem na conexão padrão Cliente-Servidor.
Neste caso, a orientação é que sejam desativados os Logs para efeito de validação da performance da rotina.
Importante
A alteração do parâmetro de Logs ativados no SeniorConfigCenter exige o reinicio do SeniorMiddleware em todos os Servidores de Middleware.
Observação
Para mais informações sobre o questões relacionadas a Performance/Lentidão/Travamentos do Gestão Empresarial | ERP, consulte o artigo ERP - Performance/Lentidão/Travamentos - Onde é possível encontrar informações diversas sobre questões relacionadas a Performance/Lentidão/Travamentos (índice).