Home

Linha Microsiga Protheus

Páginas filhas
  • Baixa performance em ambientes virtualizados com c-tree Server

Produto

Microsiga

Versões

Protheus 11

Sintoma

Baixa performance em ambientes virtualizados com C-Tree Server

Causa

Utilização de c-tree Server para uso com os dicionários (SXS ) e tabelas temporárias do ERP.

Solução

Para uso com tabelas temporárias, a partir deste momento, é possível parametrizar o TOTVS | Application Server e o c-tree-Server em conjunto, viabilizando um acesso mais leve e mais rápido nas operações de inserção e atualização de registros. Testes realizados com a parametrização foram de 2 a 3 vezez mais rápidos.

A alteração na configuração do TOTVS | Application Server deve ser realizada no arquivo appserver.ini, na seção [General] , acrescentando a chave CtreePreImg=1

Em conjunto, deve ser alterado o arquivo de configuração do c-tree Server (ctsrvr.cfg), eliminando ou comentando a chave COMPATIBILITY FORCE_WRITETHRU


IMPORTANTE : Caso a configuração do TOTVS | Application Server não esteja sincronizada com a correspondente alteração das configurações do c-tree Server, além da performance do ambiente piorar significativamente, existe o risco de corrompimento de arquivos de dados do c-Tree que utilizem campo memo em sua estrutura, como por exemplo o arquivo de profile do erp Microsiga, quando acessado para inserção e atualização de dados em um cenário de concorrência de processos, ocasionando erros como "Ctree Error - Insert - File: <FILENAME_CT> - Error: 123 - Variable-length data record is not preceded by a valid record mark. The file has apparently been corrupted.". As alterações das configurações em ambos (Protheus e c-Tree Server) devem ser realizadas com os serviços parados.

Informações Adicionais

  • Melhoria implementada em conformidade com o plano de melhoria contínua da ferramenta. 
  • A remoção dos parâmetros mencionados do c-tree Server altera um comportamento de efetivação de gravação de dados diretamente no disco, favorecendo ao c-tree Server o uso de buffers intermediários e caches que possibilitam o ganho de performance obtido. Porém, em caso de término anormal do sistema, como um "Crash " no sistema operacional, ou o serviço do c-tree Server ser finalizado diretamente pelo sistema operacional, ou mesmo a queda do servidor por falta de energia elétrica aumentam as chances de haver corrompimento das tabelas gerenciadas pelo c-tree Server. Independente da configuração utilizada, é uma boa prática de contingência utilizar um No-Break nos equipamentos servidores que compõe o site de produção, e utilizar o mecanismo de backup dinâmico do c-tree para que um evento crítico não comprometa a restauração da operabilidade do sistema.

Ocorrências conhecidas
  • Após a implementação desta configuração, foi identificada uma situação específica de falha de criação de índices. A ocorrência era reproduzida na criação de índices temporários, e foi corrigida a partir da Build 7.00.120420A, node maiores detalhes sobre a ocorrência estão disponíveis no link Correção - Criação de índice temporário com c-Tree Server e PREIMG
  • Posteriormente foi identificada uma segunda ocorrência, também na criação de índices, onde algumas aplicações do ERP criam um índice temporário para uma tabela permanente, e a criação do índice falha com a ocorrência "RebuildIIndex - Ctree Error 71 - IO Error: -3 - There is no active transaction pending ". 

    Em particular, algumas aplicações do ERP, como por exemplo a rotina CFGX031 – Base de dados – tentam criar um índice para um dicionário onde a operação apresenta falha quando o Protheus Server está configurado para utilização do recurso PREIMG. Atualmente, esta ocorrência é contornável realizando o acesso à rotina com um binário do Protheus não configurado para usar o recurso PREIMG.

 

Fonte: Melhoria - Ganho de performance utilizando c-tree Server