Baixa Performance Abertura de Rotinas MVC

Ao abrir uma rotina MVC - Modelo X com muitos elementos - 3 Grids, 1 Form, botões para usar em 2 grids, mensagem de rodapé leva cerca de 9 segundos. No segundo acesso é de cerca de 6 segundos.

Já foi utilizado Caches SetCacheView(.T.) no FwMBrowse da tela principal. E no model já foi utilizado SetOnDemand().

Tabelas Envolvidas já possuem índices adequados, porém no caso as tabelas envolvidas estão quase vazias (Não se trata de volume de dados nas tabelas).

Ambiente Avaliado: ORACLE 19C, Binários Atualizados, Release 2310 (Dicionário no Banco de Dados), Usando VPN FortClient, Internet de 600Mpbs, Ping Médio de 22ms, Latência SmartClient x AppServer 31/32 milisegundos (Medido pela função ADVPL Ping ).

** Seria possível melhorar o desempenho de abertura de rotinas MVC para cerca de 2 segundos?

O que seria mais adequado observar e avaliar?

A única maneira de melhorar o desempenho é remover campos e objetos da Tela MVC? Tirando o aspecto de infraestrutura (BD, Servidores, Rede, VPN), pela linguagem existe algo que poderia ser feito? **

Gera um logprofiler, é possível ler o mesmo para identificar os pontos de lentidão. Além disso, verifica como fica o resultado do MallocIO desse servidor.

Daniel, obrigado pelo Retorno.

Sobre o MallocIO o time de infra retornou que retorna condições boas do Servidor.

LogProfiler não foi utilizado porque é algo que ocorre em todas as rotinas MVC mais complexas (Por isso a pergunta se existe algo no código ADVPL que pode ser feito para melhorar) - não ocorre em apenas rotinas MVCs específicas.

Validando pelo SmartClient HTML com WebAgent a performance se mostrou totalmente diferente. Foi percebido que o acesso inicial do browse caiu de 30 segs para 20 segs. E o acesso aos detalhes da rotina MVC caiu de 7-9 segs para 2 segs como esperado.

Realmente esse problema de lentidão nas telas MVC eu também observei, é algo geral do MVC, qualquer tela com mais elementos fica bastante pesada para carregar, e se for complexa com 4, 5, 6 ou mais elementos de dados então leva uns 10 seg para carregar. Isso piora absurdamente com conexões mais lentas, parece ser algo que sobrecarrega a comunicação entre o smartclient e o servidor, não é um problema de performance da aplicação em si, algo de comunicação, vejo muito espaço para melhorar esse problema, alguma otimização na comunicação entre o servidor e o client deve reduzir muito esse problema.

1 curtida

Aqui também causa uma lentidão grande, por exemplo as rotinas MVC referente ao esocial modulo 84. Quando é aberto direto pelo servidor é bem rápido, qdo é na maquina do usuario demora bastante. Servidor não é local mas essa lentidão acontece mais nas rotinas MVC nas demais é normal.

Já passei por essa situação e quando preciso usar várias grids correlacionados eu crio um função e monta a query para preencher os dados passando no bloco de código bLoad

MPFORMMODEL():AddGrid(<cId >, <cOwner >, <oModelStruct >, <bLinePre >, <bLinePost >, <bPre >, <bLinePost >, <bLoad >)

https://tdn.totvs.com/display/public/framework/MPFormModel