Histórico da Página
...
Produto: | Banco de Dados |
Versões: | Todas as Versões |
Ocorrência: | Orientações Gerais para Otimização de Performance |
Ambiente: | Banco de Dados, CorporeRM, Nova MDI. |
Passo a passo: | ORIENTAÇÃO GERAL DE PERFORMANCE Situações relacionadas a baixa performance do CorporeRM podem ter diversas origens, como: ausência de índices, bloqueios de antivírus, não-conformidades da versão, parametrizações do ambiente, dentre outras. ATUALIZAÇÃO As soluções de decorrências de problemas de baixa performance - que são caracterizados por alterações no sistema - são disponibilizadas em patch específicos. MANUTENÇÃO Realize/revise a manutenção da Base da Base de Dados conforme link abaixo: Obs.: Ocorrem alterações nas procedures correspondentes (ONLINE = ON e ONLINE = OFF, com separação por edição) NGEN O NGEN é uma ferramenta que melhora o desempenho de aplicativos gerenciados. Ngen cria imagens nativas, que são arquivos que contém o código de máquina específico do processamento compilado e as instala no cache de imagem nativa do computador local. O tempo de execução pode usar imagens nativas do cache em vez de usar o compilador JIT (Just-In-Time) para compilar o assembly original. http://tdn.totvs.com/pages/releaseview.action?pageId=235601768 Obs.: Em determinados cenários, a execução do NGEN pode ser estender por vários minutos, sendo assim, recomendamos que a execução seja realizada fora do horário de produção. DELIMITAÇÃO DE REGISTROS NA VISÃO A quantidade de registro definida para visão, pode ser caracterizado como um ofensor para performance. Recomendo que altere para 1000 a quantidade de registros na visão, conforme resultado da seguinte consulta SQL: http://tdn.totvs.com/pages/releaseview.action?pageId=489764485 Tal cenário é importante uma vez que os registros em visão raramente são gerenciados pelo usuário. A montagem da visão difere por exemplo da construção de um relatório, que explora o potencial de processamento analítico de dados, podendo lidar com volumes maiores. Os registros carregados na visão do produto, quando superior a mil registros, podem ocasionar consumo elevado de memória e CPU nos servidores de aplicação, client e Banco de Dados ocasionando overhead destas camadas. ISOLAMENTO DA BAIXA PERFORMANCE (TESTE LOCAL) ENABLECOMPRESSION (N CAMADAS) O RM tem um mecanismo de compressão de dados que é usado com o objetivo de melhorar a performance do sistema, no trafego de dados entre cliente e servidor. É importante lembrar que o custo para compactação e descompactação dos dados em redes Gigabits, pode ser superior a transferências sem a compactação.
ISOLAMENTO DA BAIXA PERFORMANCE (TESTE LOCAL)
1. BANCO DE DADOS 1.1 AUTO CREATE STATISTICS Auto Create Statistics – Configurada como True, as estatísticas de índice são automaticamente criadas, sempre que você criar um índice, o SQL Server cria um conjunto de estatísticas sobre os dados contidos dentro do índice. O otimizador de consulta utiliza essas estatísticas para determinar se ele deve ou não utilizar o índice para ajudar a processar a consulta. Devido a característica das aplicações da linha RM, pode ser benéfico para o desempenho de relatórios e outros itens customizados que eventualmente demandem filtros específicos que não são compreendidos por índices padrões do produto, bem como em melhorias de planos de execução ineficientes. Por padrão o backup de nossa base vazia, utilizada normalmente para implantação possui este parâmetro desmarcado para não gerar estatísticas em todas as tabelas. No entanto, esta é uma opção do banco de dados que poderá ser utilizada em cenários específicos de análise de desempenho mensurando o impacto, custo de manutenção e resultados obtidos com a utilização deste parâmetro como TRUE. A Microsoft recomenda a utilização deste parâmetro como TRUE por default. A base CorporeRM possui um número elevado de índices, porém dado a possibilidade de customizações, ainda existem diversas querys que não se utilizam de índices em suas pesquisas. A ausência de estatísticas nestas colunas pode provocar a escolha de planos de execução inadequados, ocasionando lentidão e travamento.Na alteração do parâmetro para true pode ser constatado um efeito positivo imediato, em seguida - após a otimização do processo correspondente - o parâmetro pode ser alterado para false novamente. Entendemos que para ativação definitiva desse parâmetro no Banco de Dados é necessário desprender um maior tempo de acompanhamento, para avaliação de resultados, overheads e avaliação do aumento do tempo de manutenção para atualização de estatísticas. Esse avaliação deverá ser realizada pelo DBA da empresa. Atenção: Favor realizar o procedimento acima em ambiente/base de teste e somente após avaliar os resultados aplicar em produção. 1.2 - MANUTENÇÃO Realize/revise a manutenção da Base da Base de Dados conforme link abaixo:http://tdn.totvs.com/pages/releaseview.action?pageId=233756331 Obs.: Ocorrem alterações nas procedures correspondentes (ONLINE = ON e ONLINE = OFF, com separação por edição) 1.3 – ISOLAMENTO E VIRTUALIZAÇÃO 1.3.1 – ISOLAMENTORecomendamos que o servidor de Banco de Dados, seja utilizado exclusivamente para prover o ambiente da instância SQL Server, salve casos, onde a recomendação parte do suporte CorporeRM. Problemas gerados pela aplicação ou aplicativos de terceiros, podem acarretar em problemas de performance no Banco de Dados.1.3.2 – VIRTUALIZAÇÃOEm relação a virtualização do ambiente de banco de dados, temos alguns pontos de atenção relacionados a características desta camada que tem alta demanda por ciclos de CPU, memória e IOPS, o que somado ao overhead natural do ambiente virtualizado pode gerar gargalos de processamento. Apesar de não recomendarmos, a virtualização é uma opção de escolha do cliente, caso disponha de uma equipe especializada, pode-se obter resultados de desempenho próximos de um sistema físico. A recomendação de não virtualização do ambiente de banco de dados se dá pelas características desta camada que tem alta demanda por ciclos de CPU, memória e IOPS, o que somado ao overhead natural do ambiente virtualizado pode gerar gargalos de processamento. Apesar de não recomendarmos, a virtualização é uma opção de sua escolha, caso disponha de uma equipe especializada, você pode obter resultados de desempenho próximos de um sistema físico. Algumas questões a serem consideradas na virtualização do banco de dados. Recursos:
Licenciamento
Administração
Reserve de 2 GB a 4 GB para o sistema operacional em si. https://docs.microsoft.com/pt-br/sql/database-engine/configure-windows/server-memory-server-configuration-options1.5 – TEMPDB Afim de evitar contenção no mesmo, a Microsoft recomenda que se o número de processadores lógicos for menor ou igual a oito processadores, use o mesmo número de processadores lógicos para os arquivos de dados. Se o número de processadores lógicos for maior que oito, use oito arquivos de dados, se a contenção persistir poderão ser adicionados novos datafiles de 4 em 4 até o número de processadores lógicos. Poderá ser planejado um ajuste para 8 datafiles, considerando a necessidade de reduzir a contenção no Tempdb. Além disso, é importante alocar o tempdb em unidades de disco com boas taxas de Iops para que as operações nesta base que é acessada de forma concorrente por todas as bases na instancia, não impacte no desempenho das aplicações. Atenção: Esse avaliação deverá ser realizada pelo DBA da empresa. 2. AMBIENTE2.1 LATÊNCIA E REDE Para uma boa experiência de uso, é recomendado que a latência máxima de rede entre a estação de trabalho e o servidor seja de no máximo 100 milissegundos e a largura de banda média por usuário seja de no mínimo 256 Kbps.Embora tal cenário, seja de maior escopo da equipe de infra da empresa, segue algumas recomendações de parametrizações.CONFIGURAÇÃO_ARQUIVO ‘HOSTS’ - TEMPO DE RESOLUÇÃO NO DNSO arquivo Hosts, localizado no diretório " %WinDir%\System32\Drivers\Etc ", permite encontrar um ponto em uma rede de forma simples e ágil, através do relacionamento de hostname e IP incluso em sua estrutura: http://tdn.totvs.com/pages/releaseview.action?pageId=274639875 CHECKSUM OFFLOAD (VM) É aconselhável em servidores virtualizados a inativação do componente CheckSum Offload (IPv4, IPv6, TCP e UDP) para desabilitação das verificações cruzada de usuários: Também recomendo que os seguintes componentes sejam desativados:
IPV6 Inativação dos componentes IPV6 da placa de rede para aprimoramento do trafego de informações via IPV4. 2.2 BALANCEAMENTO NATIVO Com o Balanceamento Nativo, todas as requisições serão balanceadas entre os hosts disponíveis descritos no arquivo de configuração do aplicativo (RM.exe.configou outros como por exemplo RMLabore.exe.config), mantendo o consumo de memória RAM e CPU dimensionado entre eles (4 serviços RM.Host.Service). Além disso, quando se utiliza Múltiplos Hots é possível obter contingência caso algum deles venha a ter inconsistência, não afetando o ambiente de produção.RM - Frame - Balanceamento nativo (multiplos hosts) BAIXA PERFORMANCE EM UM PROCESSO ESPECIFICO Caso a lentidão ocorra especificamente em um processo (ex.: espelho de ponto, integração bancário, dentre outros) e não acarrete em uma baixa performance generalizada.
Caso a principal suspeita recaia sobre a atualização de versão, recomendamos que realize um teste em ambiente local, utilizando o patch especifico anterior. 1. BANCO DE DADOS 1.1 NÍVEL DE COMPATIBILIDADE Considere também as seguintes obervações sobres os níveis 130 e 140: BD0026_Nível_de_Compatibilidade_SQL_Server_2016_(130)
Por padrão o backup de nossa base vazia, utilizada normalmente para implantação possui este parâmetro desmarcado para não gerar estatísticas em todas as tabelas. No entanto, esta é uma opção do banco de dados que poderá ser utilizada em cenários específicos de análise de desempenho mensurando o impacto, custo de manutenção e resultados obtidos com a utilização deste parâmetro como TRUE. A Microsoft recomenda a utilização deste parâmetro como TRUE por default.
Atenção: Favor realizar o procedimento acima em ambiente/base de teste e somente após avaliar os resultados aplicar em produção. 1.3 - MANUTENÇÃO
Obs.: Ocorrem alterações nas procedures correspondentes (ONLINE = ON e ONLINE = OFF, com separação por edição) 1.4 – ISOLAMENTO E VIRTUALIZAÇÃO
Em relação a virtualização do ambiente de banco de dados, temos alguns pontos de atenção relacionados a características desta camada que tem alta demanda por ciclos de CPU, memória e IOPS, o que somado ao overhead natural do ambiente virtualizado pode gerar gargalos de processamento. Apesar de não recomendarmos, a virtualização é uma opção de escolha do cliente, caso disponha de uma equipe especializada, pode-se obter resultados de desempenho próximos de um sistema físico. Recursos:
Licenciamento
Administração
Afim de evitar contenção no mesmo, a Microsoft recomenda que se o número de processadores lógicos for menor ou igual a oito processadores, use o mesmo número de processadores lógicos para os arquivos de dados. Se o número de processadores lógicos for maior que oito, use oito arquivos de dados, se a contenção persistir poderão ser adicionados novos datafiles de 4 em 4 até o número de processadores lógicos.
Atenção: Esse avaliação deverá ser realizada pelo DBA da empresa.
2.1 LATÊNCIA E REDE
Também recomendo que os seguintes componentes sejam desativados:
IPV6 Inativação dos componentes IPV6 da placa de rede para aprimoramento do trafego de informações via IPV4. 2.2 BALANCEAMENTO NATIVO
Observações:
2.3 JOBS 2.3.1 AJUSTE DO POOLING DO SERVIDOR DE JOB O Job Server (Servidor de Jobs) utiliza um sistema de Pooling, onde a aplicação realiza a leitura da fila de Jobs existente no banco de dados. Esta leitura ocorrerá conforme o tempo configurado na tag <JobServerPollingInterval> do arquivo Alias.dat. Desta forma, a cada X segundos o mecanismo de job verificará a existência de Jobs pendentes de execução. Existindo processos a serem executados e threads simultâneas disponíveis, o processo será executado. Recomendamos que o valor da tag JobServerPollingInterval seja igual a 2. Essa parametrização pode ser realizada através do campo ‘Intervalo entre verificações (polling) do Gerenciamento de Alias. Diretório: C:/Totvs/CorporeRM/RM.Net/ RM.AliasManager.exe
Obs.: Em ambiente com instalação local, essa parametrização não é necessária.
Na decorrência da execução de processo que não são executados (0% processamento), recomendo que leitura dos seguintes artigos: RM - Frame - Processos não executam Observações:
Dados inconsistentes e (ou) registros em excessos, nas tabelas de execução de processos, poderão acarretar em cenários de baixa performance: 2.4 FRACIONAMENTO DE PROCESSOS. O fracionamento de processos, é um recurso que possibilita uma melhora na execução de determinados Jobs. Sendo assim, recomendo que utilize o ‘Fracionamento de processos’ para os seguinte itens:
http://tdn.totvs.com/display/public/LRM/DT_Fracionamento_Calculo Porém tal parametrização poderá acarretar em um maior consumo de recursos do Banco de Dados, já que determinados processos serão fracionados e executados em simultâneo no Banco de Dados. Em paralelo o processo deverá ser monitorado quanto ao tempo total de execução, e o Banco de Dados em relação a consumo de recursos. Referente ao ‘Fracionamento de Processos’, recomendamos o acompanhamento da equipe infra da empresa, devido a necessidade de monitoramento de recursos do servidor de Banco de Dados. Obs.: Em caso de dúvidas, relacionadas a parametrização indicada, recomendo que entre em contato com o suporte do RM Labore.
Em determinados cenários, a baixa performance do sistema pode ser ocasionada pelo consumo excessivo de recursos, seja pelo serviços RM.Host.Service ou aplicações de terceiros. Para comprovar a relação do consumo excessivo (RM.Host.Service) e a performance, realize um teste reiniciando os serviços correspondentes. RM - Frame - Reiniciar Host e Apagar _Broker.dat Observações:
2.3 JOBS 2.3.1 AJUSTE DO POOLING DO SERVIDOR DE JOB O Job Server (Servidor de Jobs) utiliza um sistema de Pooling, onde a aplicação realiza a leitura da fila de Jobs existente no banco de dados. Esta leitura ocorrerá conforme o tempo configurado na tag <JobServerPollingInterval> do arquivo Alias.dat. Desta forma, a cada X segundos o mecanismo de job verificará a existência de Jobs pendentes de execução. Existindo processos a serem executados e threads simultâneas disponíveis, o processo será executado. Recomendamos que o valor da tag JobServerPollingInterval seja igual a 2. Essa parametrização pode ser realizada através do campo ‘Intervalo entre verificações (polling) do Gerenciamento de Alias. Diretório: C:/Totvs/CorporeRM/RM.Net/ RM.AliasManager.exe Essa mudança no entanto, deverá ser efetivada considerando dois fatores iniciais:
Obs.: Em ambiente com instalação local, essa parametrização não é necessária. 2.3.2 PROCESSOS NÃO SÂO EXECUTADOSNa decorrência da execução de processo que não são executados (0% processamento), recomendo que leitura dos seguintes artigos: RM - Frame - Processos não executam Observações:
O fracionamento de processos, é um recurso que possibilita uma melhora na execução de determinados Jobs. Sendo assim, recomendo que utilize o ‘Fracionamento de processos’ para os seguinte itens:
Porém tal parametrização poderá acarretar em um maior consumo de recursos do Banco de Dados, já que determinados processos serão fracionados e executados em simultâneo no Banco de Dados. Em paralelo o processo deverá ser monitorado quanto ao tempo total de execução, e o Banco de Dados em relação a consumo de recursos. Referente ao ‘Fracionamento de Processos’, recomendamos o acompanhamento da equipe infra da empresa, devido a necessidade de monitoramento de recursos do servidor de Banco de Dados. Obs.: Em caso de dúvidas, relacionadas a parametrização indicada, recomendo que entre em contato com o suporte do RM Labore. 2.5 CONSUMO DE RECURSOSEm determinados cenários, a baixa performance do sistema pode ser ocasionada pelo consumo excessivo de recursos, seja pelo serviços RM.Host.Service ou aplicações de terceiros. Para comprovar a relação do consumo excessivo (RM.Host.Service) e a performance, realize um teste reiniciando os serviços correspondentes. RM - Frame - Reiniciar Host e Apagar _Broker.dat Vale ressaltar que a ausência de recursos, pode ser atrelada ao sub-dimencionamento do ambiente, sendo necessário o enquadramento de hardware ao documento de portabilidade:http://tdn.totvs.com/display/public/LRM/PORTABILIDADE Caso verifique um consumo excessivo dos serviços RM.Host.Service, que comprovadamente onera a performance do sistema, favor entrar em contato com suporte RM Framework. 2.6 ANTIVÍRUSPor segurança a maioria dos antivírus realizam as verificações em tempo real nos diretórios TOTVS e Banco de Dados, prejudicando qualquer execuções e/ou gravação a serem realizadas nos diretórios. Deste modo é aconselhável tratar os diretórios abaixo como exceção, em todos ambientes que possuem a estrutura instalada: Linha RM
2.7 WINDOWS O objetivo deste documento é listar uma série de procedimentos referentes à configurações e ajustes no sistema operacional e no .net framework com o intuito de se maximizar a performance das aplicações da linha RMCaso verifique um consumo excessivo dos serviços RM.Host.Service, que comprovadamente onera a performance do sistema, favor entrar em contato com suporte RM Framework.
Por segurança a maioria dos antivírus realizam as verificações em tempo real nos diretórios TOTVS e Banco de Dados, prejudicando qualquer execuções e/ou gravação a serem realizadas nos diretórios. Deste modo é aconselhável tratar os diretórios abaixo como exceção, em todos ambientes que possuem a estrutura instalada: Linha RM
OBS.: E todos os diretórios referentes a instalação do produto. 2.7 WINDOWS O objetivo deste documento é listar uma série de procedimentos referentes à configurações e ajustes no sistema operacional e no .net framework com o intuito de se maximizar a performance das aplicações da linha RM. http://tdn.totvs.com/pages/releaseview.action?pageId=23375634 2.8 ISOLAMENTO DO SERVIDOR DE APLICAÇÃO Recomendamos que o Servidor de Aplicação, seja utilizado exclusivamente para prover a Camada de Aplicação, salve casos, onde a recomendação parte do suporte CorporeRM. Obs.: Caso possível, realize a instalação do TAF em outro servidor ou localmente, mantendo o Camada de Aplicação do CorporeRM isolada. 2.9 - CAMADA SOBREPOSTA (SERVIDOR DE TS COM INSTALAÇÃO LOCAL)
2.10 - SMARTCLIENT display/public/LRM/Configurando+o+Smart+Client+RM+e+TOTVS+Update |
Observações: | OBSERVAÇÃO |