quinta-feira, 26 de janeiro de 2012

Como Fazer – Configurações Avançadas para Potencializar o Desempenho das Aplicações da Linha RM

Produto: Todos

Processo: Análise de Performance

 

Introdução

O ERP da TOTVS é preparado para trabalhar com diversos usuários e requisições simultâneas, ele é capaz de executar vários processos ao mesmo tempo.

Neste documento apresentaremos  informações avançadas sobre a configuração do ambiente e do produto, antes recomendamos a leitura e aplicação das recomendações do Guia “Configurações básicas para potencializar o desempenho das aplicações Linha RM”.

Inicialmente iremos realizar uma introdução sobre alguns itens referente à arquitetura e Framework, Portal, Banco de Dados, ERP e na segunda parte do documento apresentaremos instruções que visam melhorar a performance do sistema e garantir que ele trabalhe sempre com os melhores resultados.

Arquivos de configuração do ERP (Host.exe)

Algumas alterações nos arquivos com a extensão config deverão ser realizadas com objetivo de melhora de perfomance, estes arquivos serão encontrados na pasta RMNET no diretório de instalação da aplicação, veja nos links abaixo como configurar:

Compressão de Dados

Protocolos de Comunicação

Garbage Collector MultiThread

Separação Job Server / App Server

Um Host é responsável por duas tarefas principais:

  • Processar Jobs;
  • Responder a requisições de telas.

Em alguns momentos, quando o Host está executando um número alto de Jobs, as aberturas de telas podem levar um tempo excessivo para responder. Isto acontece porque Jobs e telas dividem os mesmos recursos, sendo o número de threads dos Jobs muito maior. A demora na abertura causa a impressão de que o sistema apresenta lentidão, quando na verdade ele está trabalhando corretamente, contudo precisa executar as threads dos processos, que são em número maior que as threads de telas.

Temos como principais vantagens:

  • Telas respondem mais rapidamente, uma vez que não têm que dividir processamento.
  • As duas funcionalidades ficam completamente isoladas, podendo sofrer manutenção e tratamentos separadamente, sem ônus para a outra.

clip_image001 A separação do Job Server e do App Server somente se aplica a clientes que utilizam o ambiente 3 camadas.

clip_image001[1] Solução: separar Job Server e App Server em hosts diferentes, para orientação acesse o item

Job Server / App Server.

Banco de Dados

O banco de dados é muito importante no que se diz respeito à performance no produto, por isto é muito importante que a empresa tenha um banco de dados com excelente desempenho para que não seja prejudicada a comunicação entre o produto e o banco de dados.

Abaixo algumas verificações que deverão ser realizadas com objetivo de melhorar a perfomance do ERP :

Triggers

Atualização das estatísticas do banco de dados

Auto create statistics" e "Auto update statistics"

Limpeza de objetos temporários na base de dados

Monitoramento do log do banco de dados

Reindexação periódica das tabelas

Virtualização

Paralelismo

Avaliação de índices

Memória SQL Server

Processos bloqueados no banco de dados

Antivírus

BDE

TSS

Portal RM

Algumas ações poderão ser realizadas para que o portal tenha um melhor desempenho, abaixo citaremos duas destas ações:

Utilizar cache para objetos estáticos

Compressão de Páginas

Instruções

1 – Compressão de dados

A partir da versão 11.20, o ERP possui a opção de comprimir os dados trafegados entre server e cliente com isto temos ganho na velocidade de comunicação, aumento de segurança, uma vez que os dados não estão mais diretamente expostos via Sniffer.

A Compressão é habilitada por padrão, sempre garantir que, se presente, a tag abaixo esteja setada como true, tanto no server e no client, no arquivo RM.HOST.EXE.Config que fica localizado no diretório de instalação dos aplicativos RM, dentro da pasta RM.NET:

<add key="EnableCompression" value="true"/>

Retornar para Compressão de Dados.

2 – Protocolos de Comunicação

A partir da versão 11.20, o ERP possui as seguintes opções de protocolo de comunicação de dados:

  • TCP;
  • HTTP;
  • NamedPipe;

Para comunicações na mesma máquina, o protocolo mais rápido é o NamedPipe, para comunicações entre Host e Client em máquinas diferentes, a melhor opção é o TCP, por padrão, estas são as configurações default. Contudo, sempre checar se a configuração não está errada a partir da chave de config, que aceita os valores citados acima, o arquivo a ser alterado é o RM.HOST.EXE.Config, este arquivo fica localizado no diretório de instalação dos aplicativos RM, dentro da pasta RM.NET, abaixo linha a ser verificada no arquivo citado acima:

<add key=“WcfProtocol" value=“XXXXXX"/>

Retornar para Protocolos de Comunicação.

3 - Garbage Collector MultiThread

Quando operando em ServerMode, o Garbage Collector proporciona desempenho otimizado para hosts que contém múltiplos núcleos, pois a infraestrutura do .net framework cria uma thread de coleta para cada núcleo, temos como principais vantagens a melhor utilização de recursos da máquina, diminuição do tempo em que a aplicação fica sobrecarregada pela execução da coleta

Para utilização deste recurso devemos acrescentar a tag abaixo no config do Host, o arquivo a ser alterado é o RM.HOST.EXE.Config fica localizado no diretório de instalação dos aplicativos RM, dentro da pasta RM.NET:

<configuration>

<appSettings>

...

</appSettings>

<Configuration>

<runtime>

<gcServer enabled=“true” />

</runtime>

</Configuration>

</configuration>

Retornar para Garbage Collector MultiThread.

4 - Job Server / App Server

clip_image003

Configuração:

1. Configure um ou mais Hosts trabalhando em conjunto.

Sete a propriedade “Habilitar Processamento de Job” para false no Host que trabalhará como AppServer;

2. Sete a propriedade “Habilitar Processamento de Job” para true no Host que trabalhará como JobServer;

3. Configure todas as máquinas clientes para apontarem seus configs para a máquina que trabalhará como AppServer, para selecionar a opção "Habilitar Processamento de Job" deverá acessar a pasta RM.NET no diretório de instalação dos aplicativos RM e localizar o aplicativo RM.AliasManager e na aba Serviços deverá marcar a opção Habilitar Processamento de Job:

clip_image005

Para inclusão da tag referente ao AppServer deverá acessar os arquivos RM.Host.exe.config, RM.exe.config, RM.Host.Service.exe.config,RM.AliasManager.exe.config que ficam localizados na pasta RM.NET, dentro da pasta de cada um dos aplicativos a tag também deverá ser incluida, por exemplo, para o RMLabore deverá acessar o arquivo RMLabore.exe.config.

clip_image007

Retornar para Job Server / App Server.

5 - Caching

O browser tem a capacidade de manter objetos em cache para diminuir o tempo gasto com a transferência destes objetos até o cliente. Isto permite um melhor desempenho no tempo de resposta das páginas.

Configurando o cache de saída do IIS

Aplica-se a: Windows 7, Windows Server 2008, Windows Server 2008 R2, Windows Vista.

No IIS 7, você pode configurar o cache de saída para aprimorar o desempenho no servidor Web e no web site. Quando um usuário solicitar uma página da Web, o IIS processará a solicitação e retornará uma página ao navegador cliente. Se você habilitar o cache de saída, uma cópia dessa página da Web processada será armazenada na memória no servidor Web e retornada aos navegadores cliente nas solicitações subsequentes para esse mesmo recurso. Isso elimina a necessidade de reprocessar a página sempre que ela for solicitada. Isso é útil quando o seu conteúdo depender de um programa externo para processamento, como com um programa CGI, ou incluir dados de uma fonte externa, como de um compartilhamento ou banco de dados remoto.

Para criar uma regra de cache de saída.

É possível realizar este procedimento usando a UI (interface de usuário) ou uma linha de comando.

Para usar a UI.

1 - Abra o Gerenciador do IIS e navegue até o nível que deseja gerenciar.

Para obter mais informações sobre como abrir o Gerenciador do IIS, consulte IIS 7.0: Abrir o gerenciador do IIS.

Para obter informações sobre como navegar até locais na interface do usuário, consulte IIS 7.0: Navegação no gerenciador do IIS.

2 - Em Exibição de Recursos, clique duas vezes em Cache de Saída.

3 - No painel Ações, clique em Adicionar.

4 - Na caixa de diálogo Adicionar Regra de Cache, na caixa Extensão de nome de arquivo, insira a extensão de nome de arquivo, como .aspx, para a qual deseja criar uma regra de cache.

5 - Marque a caixa de seleção Cache de modo de usuário para habilitar o cache de saída e selecione uma das seguintes opções:

Usando notificações de alteração de arquivo: se quiser que um item seja removido do cache quando for atualizado.

Em intervalos (hh:mm:ss): se quiser que um item seja removido do cache depois que determinado tempo decorrer. Em seguida, digite uma hora no formato de hh:mm:ss (onde h são horas, m são minutos e s são segundos) na caixa correspondente.

Retornar para Caching.

6 - Compressão de páginas

A compressão de páginas HTTP aumenta a velocidade de transmissão entre browsers com a compressão ativada no IIS. É possível comprimir apenas pastas estáticas ou arquivos estáticos e aplicações.

Fazendo uma analogia, compactar objetos da página via server é semelhante a zipar um arquivo grande para enviar por e-mail: você (servidor web) zipa um grande da família (o componente da página)retrato e envia por e-mail para seu amigo (o browser) que, por sua vez, descompacta o arquivo zip para ver a imagem.

Os métodos de compressão mais comuns são Deflate e gzip.

Para ativar o IIS a comprimir páginas .aspx, siga estes passos:

1. Abra uma linha de comandos (CMD).

2. Execute o comando: net stop iisadmin (pressioneENTER)

3. Acesse o diretório C:\InetPub\adminscripts

Comando: cd C:\InetPub\adminscripts

4. Execute o seguinte comando, pressionando ENTER ao final:

Dll "exe cscript.exe ADSUTIL.VBS SET W3SVC/Filters/compressão/GZIP/HcScriptFileExtensions"asp"" "aspx"

5. Execute o seguinte comando, pressionando ENTER ao final:

aspx"cscript.exe ADSUTIL.VBS SET W3SVC/Filters/compressão/DEFLATE/HcScriptFileExtensions"asp""dll""exe""

6. Execute o comando: net start w3svc e na linha de comando para iniciar o IIS.

Retornar para Compressão de páginas.

7 – Triggers

A existência de triggers na base de dados podem evidenciar overheads nos processamentos de tarefas do banco de dados que interferem na performance das aplicações. Abaixo disponibilizamos comandos para desabilitar e habilitar triggers no banco de dados para realização e testes de performance.

  • Sentença para verificação da existência de triggers na base de dados:

SQL Server:

SELECT NAME FROM SYSOBJECTS WHERE XTYPE = 'TR' AND NAME NOT LIKE 'Log%';

Oracle:

SELECT TRIGGER_NAME FROM USER_TRIGGERS WHERE TRIGGER_NAME NOT LIKE 'Log%';

GO

 

  • Desabilitando as triggers para avaliação do desempenho das rotinas:

SQL Server:

exec sp_MSforeachtable 'ALTER TABLE ? DISABLE TRIGGER ALL'

Oracle:

DECLARE

V_TRIGGER VARCHAR2 (200);

CID INTEGER ;

CURSOR OBJ IS

SELECT TRIGGER_NAME FROM USER_TRIGGERS ORDER BY TRIGGER_NAME;

BEGIN

OPEN OBJ;

FETCH OBJ INTO V_TRIGGER;

LOOP EXIT WHEN OBJ%NOTFOUND;

CID := DBMS_SQL.OPEN_CURSOR;

Dbms_Output.Enable (30000);

Dbms_Output.Put_Line ('Eliminando trigger ' || V_TRIGGER || '...');

DBMS_SQL.PARSE(cid, 'ALTER TABLE ' || TABLE_NAME || ' DISABLE TRIGGER ALL' , dbms_sql.v7);

FETCH OBJ INTO V_TRIGGER;

DBMS_SQL.CLOSE_CURSOR(CID);

END LOOP;

CLOSE OBJ;

END;

 

  • Para habilitar novamente as triggers:

SQL Server:

exec sp_MSforeachtable 'ALTER TABLE ? ENABLE TRIGGER ALL'

Oracle:

DECLARE

V_TRIGGER VARCHAR2 (200);

CID INTEGER ;

CURSOR OBJ IS

SELECT TRIGGER_NAME FROM USER_TRIGGERS ORDER BY TRIGGER_NAME;

BEGIN

OPEN OBJ;

FETCH OBJ INTO V_TRIGGER;

LOOP EXIT WHEN OBJ%NOTFOUND;

CID := DBMS_SQL.OPEN_CURSOR;

Dbms_Output.Enable (30000);

Dbms_Output.Put_Line ('Eliminando trigger ' || V_TRIGGER || '...');

DBMS_SQL.PARSE(cid, 'ALTER TABLE ' || TABLE_NAME || ' ENABLE TRIGGER ALL' , dbms_sql.v7);

FETCH OBJ INTO V_TRIGGER;

DBMS_SQL.CLOSE_CURSOR(CID);

END LOOP;

CLOSE OBJ;

END;

Retornar para Triggers.

8 - Atualização das estatísticas do banco de dados

As estatísticas coletadas pelo banco de dados propiciam um melhor desempenho para realizar pesquisas nas tabelas, através de um plano de execução mais eficiente, estatísticas desatualizadas podem degradar a performance do banco de dados.

Retornar para Atualização das estatísticas do banco de dados.

9 - "Auto create statistics" e "Auto update statistics"

As opções do database "Auto create statistics" e Auto update statistics podem levar a geração automática de um número grande de objetos de estatísticas, e o tempo necessário para sua atualização pelo banco de dados provavelmente implicará em perda de performance.

Retornar para "Auto create statistics" e "Auto update statistics".

10 - Limpeza de objetos temporários na base de dados

A limpeza periódica de registro de log e arquivo morto pode beneficiar bastante a execução de consultas e manipulação de dados nestas tabelas.

Retornar para Limpeza de objetos temporários na base de dados.

11 - Monitoramento do log do banco de dados

Problemas com a performance podem ter origem em eventos que são registrados no log do banco de dados, como por exemplo falhas na leitura de páginas do banco, deadlocks, etc, por isto recomendamos o monitoramento do log do banco de dados.

Retornar para Monitoramento do log do banco de dados.

12 - Reindexação periódica das tabelas

A reindexação periódica das tabelas é sumariamente necessária para o bom desempenho das aplicações, uma vez que este procedimento desfragmenta os índices das tabelas, proporcionando uma maior eficácia no processo de pesquisa no índice.

Retornar para Reindexação periódica das tabelas.

13 - Virtualização

A virtualização tem como objetivo ampliar a escabilidade do ambiente, mas pode gerar overhead no processamento dos dados, há duas maneiras de separar as aplicações SQL Server em unidades lógicas de isolamento. Um deles é para executar o SQL Server em várias instâncias dentro de um ambiente físico.

Outra maneira é executar o SQL Server dentro de um ambiente virtual, executando várias instâncias do SQL Server em um ambiente físico isolando cada instância no nível do aplicativo, em outras palavras, cabe a cada instância do SQL Server isolar os recursos do sistema, dados e segurança dos outros.

É importante notar que um dos benefícios de um ambiente virtual é que ele pode executar qualquer sistema operacional suportado pela aplicação da tecnologia virtual. Por exemplo, um ambiente virtual pode estar executando o Windows Server 2003, outro pode executar o Windows NT ® 4.0, e ainda um outro pode executar o Windows Server 2000. Um ambiente virtual consiste em uma ou mais máquinas virtuais.

O responsável pelo banco de dados da empresa deverá ficar atento ao virtualizar o servidor de banco de dados para não comprometer a performance do hardware, ou seja, sobrecarregar este servidor com vários ambientes virtualizados.

Retornar para Virtualização.

14 - Paralelismo

Atualmente, vivemos em uma era em que os microprocessadores são dominados por múltiplos núcleos, é recomendável sempre procurar explorar o paralelismo em banco de dados, a exploração de paralelismo deve ser considerada quando for necessário otimizar instruções SQL.

O SQL Server detecta automaticamente o melhor grau de paralelismo para cada instância de uma execução de consulta paralela operação DDL (linguagem de definição de dados) do índice. Isso é feito baseado nos seguintes critérios:

1 - Se o SQL Server estiver sendo executado em um computador que tenha mais de um microprocessador ou mais de uma CPU, como um computador SMP (multiprocessamento simétrico). Apenas computadores que têm mais de uma CPU podem usar consultas paralelas.

2 -Se houver threads suficientes disponíveis.

Cada operação de consulta ou índice exige um determinado número de threads para execução. A execução de um plano paralelo exige mais threads que um plano consecutivo, e o número de threads exigidos aumentam com o grau de paralelismo.

Quando o requisito de thread do plano paralelo de um grau específico de paralelismo não puder ser atendido, o Mecanismo de Banco de Dados diminuirá automaticamente o grau de paralelismo ou abandonará completamente o plano paralelo no contexto de carga de trabalho especificado. Depois, ele executará o plano consecutivo (um thread).

3 - O tipo de operação de consulta ou de índice executada.

As operações de índice que criam ou reconstroem um índice, ou descartam um índice cluster e as consultas que usam ciclos de CPU frequentemente são as melhores opções para um plano paralelo. Por exemplo, junções de tabelas grandes, agregações grandes e classificação de conjuntos de resultados grandes são boas alternativas. As consultas simples, frequentemente encontradas em aplicativos de processamento de transações, localizam a coordenação adicional exigida para executar consulta em paralelo que supera o aumento de desempenho potencial. Para distinguir as consultas que se beneficiam de paralelismo das que não se beneficia, o Mecanismo de Banco de Dados compara o custo estimado da execução da operação de consulta ou índice com o valor cost threshold for parallelism. Embora não recomendado, os usuários podem alterar o valor padrão 5 usando sp_configure.

4 - Se houver um número suficiente de linhas para processar.

Se o otimizador de consulta determinar que o número de linhas é muito baixo, não apresentará os operadores de troca para distribuir as linhas. Por conseguinte, os operadores serão executados em série. A execução dos operadores em um plano consecutivo evita cenários quando os custos de inicialização, distribuição e coordenação excedem os ganhos alcançados pela execução de operador paralela.

5 - Se as estatísticas de distribuição atuais estiverem disponíveis.

Se o grau mais alto de paralelismo não for possível, os graus inferiores serão considerados antes de o plano paralelo ser abandonado. Por exemplo, quando você criar um índice cluster em uma exibição, não poderão ser avaliadas estatísticas de distribuição, porque o índice cluster ainda não existirá. Nesse caso, o Mecanismo de Banco de Dados não poderá fornecer o grau mais alto de paralelismo para a operação de índice. Porém, alguns operadores, como de classificação e verificação, ainda poderão se beneficiar da execução paralela.

Retornar para Paralelismo.

15 - Avaliação de índices

Auditar e usar índices não é uma tarefa fácil, mas é fundamental para elevar a performance no banco de dados.

Tipos de avaliação:

Ø Indexes (Clustered)

Ø Indexes (Composição)

Ø Indexes (Covering)

Ø Indexes (Non-clustered)

Ø Indexes (Rebuild)

Ø Index Tuning Wizard

Retornar para Avaliação de Índices.

16 - Memória SQL

Deixar disponível o máximo de memória que poderá ser utilizada pelo SQL Server sem que isto atrapalhe outros processos que estiverem rodando no servidor, esta análise deverá ser feita pelo DBA da empresa.

1 - Acessar o Microsoft SQL Server conectando ao servidor, em seguida clicar com o botão direito sobre a instância e clicar em “Properties”:

clip_image009

2 - Clicar na opção “Memory” e nos campos referente a Server memory options deverá preencher os campos Minimum server memory(in MB),este campo com o mínimo de memória que o Server irá utilizar e preencha também o campo Maximum server memory (in MB) com o máximo de memória que o Server poderá utilizar do servidor.

clip_image011

Retornar para Memória SQL.

17 - Processos bloqueados no banco de dados

O procedimento sp_who serve para ter uma visão geral sobre as conexões existentes e verificar se existe alguma conexão bloqueada (Block), está é uma tarefa que deverá ser executada pelo responsável pelo banco de dados na empresa.

Retornar para Processos bloqueados no banco de dados.

18 - Antivírus

Algumas rotinas nas aplicações utilizam-se de recursos temporários gravados em disco que são frequentemente recriados, gerando um número muito grande de acessos ao disco, e o monitoramento por um antivírus durante esta tarefa gera atrasos no processamento da aplicação.

Retornar para Antivírus.

19 - BDE

O BDE pode ser otimizado para beneficiar algumas rotinas da aplicação, mas uma vez que isto seja feito sem algum critério poderá incorrer na perda de performance para alocação e gerenciamento dos recursos de memória e CPU.

A utilização de valores muito altos para BLOB SIZE, BLOBS TO CACHE e MAXFILEHANDLES pode leva uma menor performance de algumas rotinas.

A necessidade de incrementar estes parâmetros se dar pelo volume de informações processadas em cache nestas rotinas.

No ambiente do DataCenter foi ajustado o parâmetro BLOB SIZE de 3000 para 512. Este parâmetro pode ser configurado com valores > 32 e < 1000, portanto o valor antigo era inválido.

Sugerimos as seguintes configurações:

Database:

BLOB SIZE = 512

BLOBS TO CHACHE = 1024

Configuration – Native – MSSQL:

TIMEOUT = 7200

Configuration – System – Init:

MAXFILEHANDLES = 2048

MEMSIZE = 205

Retornar para BDE.

20– TSS

TSS é o aplicativo que faz a intermediação do TOTVSSped com os vários tipos de banco de dados com os quais ele pode trabalhar.

São eles: DB2, MSSQL, Oracle, Informix, PostGres, MySQL.

O TopConnect deve ser instalado somente em uma estação. Por poder trabalhar com vários tipos de banco de dados não é necessário que o mesmo seja para a base do Corpore RM e apontado também não é necessário que o mesmo seja instalado em seu servidor de banco de dados. É aconselhada a criação de uma base de dados exclusiva para o SPED devido ao fato do processo gerar muitos registros e do serviço de consulta de autorização das notas ser executado com muita frequência nas suas tabelas.

Caso deseje ele pode apontar o TopConnect para sua base do Corpore RM. A escolha da base de dados e do banco para o SPED fica a cargo do cliente.

Uma vez definido o banco e a base a ser utilizada isto não poderá ser refeito sem a perda de dados da base do SPED.

Através do endereço www.suporte.totvs.com na área de download, para localizar o arquivo para download será necessário parametrizar o filtro da seguinte forma:

Linha : RM

Ambiente: RM-99.x

No campo Filtrar deverá digitar TSS.

Para orientação na configuração do TSS acesse nosso blog:

http://www.totvsconnect.blogspot.com/2010/12/dica-configuracao-tss.html

Retornar para TSS.

Nenhum comentário:

Postar um comentário

RSS Reader