Tempo aproximado para leitura: 00:02:30 min
Dúvida
Como realizar a configuração de limites de recebimento de dados e de timeouts de conexões para relatórios, tabelas dinâmicas ou visões de dados no Smart View?
Ambiente
Cross Segmentos - TOTVS BackOffice (Linha RM) - RM BI - Todas as Versões
Solução
O Smart View é projetado para análise de dados transacionais e não possui otimizações nativas para big data. O volume de processamento exige recursos de hardware (processador e memória) do servidor ou da estação cliente, dependendo do tipo do recurso utilizado.
Para evitar o consumo total de memória ou quedas da aplicação por excesso de dados vindos do Objeto de Negócio , o sistema implementa os seguintes limites padrão:
Relatórios: 1.000.000 KB (1GB).
Tabelas Dinâmicas e Visões de Dados: 500.000 KB (500MB).
Quando esses limites são atingidos, um aviso é exibido na interface, o log registra a ocorrência e a conexão é encerrada, gerando o recurso apenas com as informações recebidas até o momento do bloqueio.
Erro gerado na interface
Erro gerado no LOG
O log ficará disponibilizado na pasta do Smart View Logs ou Deployments. No registro do log de exemplo acima é informado que o limite de dados foi atingido (524288000 bytes) e quantos dados foram disponibilizados para o recurso do Smart View (524288648 bytes.). O número de dados geralmente será superior ao limite pra evitar que o último registro do Objeto de Negócio que foi lido seja parcialmente descartado. Em seguida é exibido quantos registros foram retornados para utilização no recurso, no caso, 491827 registros.
Para evitar que situações como as expostas acima ocorram, foram definidos limites de recebimento de dados no Smart View, os quais, em ambientes OnPremise, podem ser alterados. Quando o limite é atingido, a conexão de solicitação de dados do Objeto de Negócio é encerrada e o recurso é gerado/exibido com os dados recebidos. Clientes Cloud não terão a possibilidade de alterar os limites já que eles são definidos com base nos limites das máquinas virtuais.
Configuração dos Limites
Para alterar o teto de leitura do Smart View, certifique-se de que o Smart View Agent esteja atualizado e execute o procedimento abaixo:
1. Necessário que o Smart View Agent esteja atualizado. Confira em Atualização do Agent;
2. No diretório raiz de instalação do Smart View (exemplo: C:\TOTVS\smart-view), localize o arquivo appsettings.Production.json. Caso ele não exista, crie o arquivo;
3. No arquivo devem ser adicionadas as duas propriedades abaixo para definir os novos limites:
SMART_VIEW_REPORT_GETDATALIMIT_KB : Valor em KB do limite de dados para geração de Relatórios;
SMART_VIEW_GETDATALIMIT_KB : Valor em KB do limite de dados para exibição de Tabelas Dinâmicas e Visões de Dados;
Exemplo onde os valores dos limites foram alterados, respectivamente, para 1,5GB e 750MB:
4. Salve o arquivo e reinicie o serviço do Agent do sistema operacional (identificado por padrão como SmartView.Agent) para aplicar as modificações.
Configuração do Timeout
Conector Nativo
O conector nativo disponibiliza o endpoint GetData, que pode entregar um volume grande de dados. Como alguns ambientes demoram para processar e iniciar o envio da resposta, isso pode causar a expiração da conexão HTTP.
O ajuste do tempo padrão de espera é feito por meio de variável de ambiente SMART_VIEW_GETDATA_TIMEOUT que recebe um valor inteiro representando os minutos. O valor padrão dessa variável é de 5 minutos.
Importante: Evite configurar tempos de espera longos além do necessário. Conexões HTTP abertas por períodos extensos ocupam recursos do servidor que poderiam atender outros processos. Além disso, o tempo configurado na aplicação pode ser desconsiderado por regras de firewalls ou proxies presentes na rede do cliente.
Para esta configuração siga os passos abaixo:
-
Windows
1. Acesse o menu Iniciar, pesquise por "Editar as variáveis de ambiente do sistema" e clique em "Variáveis de Ambiente";
2. Na seção "Variáveis do Sistema", clique em "Nova";
3. Defina o Nome da variável como SMART_VIEW_GETDATA_TIMEOUT e no Campo Valor informe o tempo limite em minutos (exemplo: 10);
4. Clique em OK e reinicie o serviço da aplicação. Linux
1. Abra o terminal ou acesse o arquivo de configuração de perfil (.bashrc ou .env);
2. Adicione a seguinte linha de instrução (exemplo para 10 minutos): export SMART_VIEW_GETDATA_TIMEOUT=10
Conector SQL
Para conexões estruturadas via banco de dados, as parametrizações de tempo limite de conexão e de execução devem ser adicionadas diretamente na string de configuração do cadastro do conector, respeitando as seguintes propriedades por banco:
-
SQL Server
1.Conexão: Connect Timeout=<segundos>;
2. Comando: Command Timeout=<segundos>; -
PostgreSQL
1. Conexão: Timeout=<segundos>;
2. Comando: CommandTimeout=<segundos>; -
MySQL
1. Conexão: Connection Timeout=<segundos>;
2. Comando: default command timeout=<segundos>; -
Oracle
1. Conexão: Connection Timeout=<segundos>;
2. Comando: CommandTimeout=<segundos>;
Saiba mais
Para mais informações acesse:
Configurações de limites de dados e timeouts de conexões
0 Comentários