Mudanças entre as edições de "Portal Cristo Rei 1.5.9.0"

De MSTECH wiki
Ir para: navegação, pesquisa
(Análise do teste)
(Resultado dos testes)
 
(11 revisões intermediárias pelo mesmo usuário não estão sendo mostradas)
Linha 12: Linha 12:
 
<syntaxhighlight lang="html">
 
<syntaxhighlight lang="html">
 
GET  vendor_js?v=J60IUWWvdrONmKZrXJPflFG8nW71EVrNbp9fxk0j8XU1:1
 
GET  vendor_js?v=J60IUWWvdrONmKZrXJPflFG8nW71EVrNbp9fxk0j8XU1:1
GET  http://portalinstitucional.loadtest//Areas/Main/Assets/js/resources/lang/contact-us-MSTECH.json</code></syntaxhighlight>
+
GET  http://portalinstitucional.loadtest//Areas/Main/Assets/js/resources/lang/contact-us-MSTECH.json</syntaxhighlight>
 
<syntaxhighlight lang="html">
 
<syntaxhighlight lang="html">
 
The controller for path '/bundles/famfamfam-flags.png' was not found or does not implement IController.
 
The controller for path '/bundles/famfamfam-flags.png' was not found or does not implement IController.
Linha 96: Linha 96:
 
No bando de dados foi observado que a vidas das páginas de dados é menos de 5 minutos, sendo removidas da memória uma vez que essa duração tenha decorrido. A PLE está abaixo dos valores recomendados e permanece deste modo no decorrer dos testes, em caso da queda ocorrer devido a execução, por exemplo, do DBCC CHECKDB, não há motivos para preocupação. Devido a ocorrência de paginação é necessário analisar queries e os índices e confirmar se estão otimizados. Além disso, foi observado, um elevado número de requests bloqueados, o que pode acabar gerando lentidão para vários usuários e podendo ocorrer deadlock's, neste caso é recomendado a os hints adequados para cada tipo de operação e comando SQL.
 
No bando de dados foi observado que a vidas das páginas de dados é menos de 5 minutos, sendo removidas da memória uma vez que essa duração tenha decorrido. A PLE está abaixo dos valores recomendados e permanece deste modo no decorrer dos testes, em caso da queda ocorrer devido a execução, por exemplo, do DBCC CHECKDB, não há motivos para preocupação. Devido a ocorrência de paginação é necessário analisar queries e os índices e confirmar se estão otimizados. Além disso, foi observado, um elevado número de requests bloqueados, o que pode acabar gerando lentidão para vários usuários e podendo ocorrer deadlock's, neste caso é recomendado a os hints adequados para cada tipo de operação e comando SQL.
 
   
 
   
A aplicação realiza uma grande quantidade de requests (mais de 100 requests) para carregar uma única página com menos de 3MB. Além possui elementos que não existem em nenhuma página e que resultam em erro 404.
+
A aplicação realiza uma grande quantidade de requests (mais de 100 requests) para carregar uma única página com menos de 3MB. Além de possuir elementos que não existem em nenhuma página e que resultam em erro 404.
 +
 
 +
Ai fila do processador está abaixo do valor recomendado.
  
 
=== Cenários de uso ===
 
=== Cenários de uso ===
  
Em verificação.
+
{| class="wikitable" 
 +
!colspan="6"|Cenário: Teste main
 +
|-
 +
|colspan="2"| Ação realizada ||  Think Time: Atraso constante (segundos) || Think Time: Desvio (segundos)
 +
|-
 +
|colspan="2"|01 - Acessar home || style="text-align: center; | 10 || style="text-align: center; | 5
 +
|-
 +
|colspan="2"|01 - Realizar login || style="text-align: center; | 7 || style="text-align: center; | 1
 +
|-
 +
|colspan="2"|01 - Acessar notícia || style="text-align: center; | 10 || style="text-align: center; | 2
 +
|-
 +
|colspan="2"|01 - Acessar tela do menu || style="text-align: center; | 5 || style="text-align: center; | 1
 +
|-
 +
|}
 +
 
 +
{| class="wikitable" 
 +
!colspan="6"|Cenário: Teste do admin
 +
|-
 +
!colspan="6"|Criar notícia
 +
|-
 +
|colspan="2"| Ação realizada ||  Think Time: Atraso constante (segundos) || Think Time: Desvio (segundos)
 +
|-
 +
|colspan="2"|02 - Acessar home || style="text-align: center; | 5 || style="text-align: center; | 1
 +
|-
 +
|colspan="2"|02 - Realizar login || style="text-align: center; | 7 || style="text-align: center; | 1
 +
|-
 +
|colspan="2"|02 - Acessar tela de administração || style="text-align: center; | 5 || style="text-align: center; | 1
 +
|-
 +
|colspan="2"|02 - Clicar em "Notícia" || style="text-align: center; | 5 || style="text-align: center; | 1
 +
|-
 +
|colspan="2"|02 - Clicar em "Nova notícia" || style="text-align: center; | 5 || style="text-align: center; | 1
 +
|-
 +
|colspan="2"|02 - Preencher campo "Título" || style="text-align: center; | 5 || style="text-align: center; | 1
 +
|-
 +
|colspan="2"|02 - Clicar em "Salvar" || style="text-align: center; | 10 || style="text-align: center; | 2
 +
|-
 +
!colspan="6"|Criar álbum sem usar flickr
 +
|-
 +
|colspan="2"|03 - Acessar home || style="text-align: center; | 5 || style="text-align: center; | 1
 +
|-
 +
|colspan="2"|03 - Realizar login || style="text-align: center; | 7 || style="text-align: center; | 1
 +
|-
 +
|colspan="2"|03 - Acessar a administração do portal || style="text-align: center; | 5 || style="text-align: center; | 1
 +
|-
 +
|colspan="2"|03 - Clicar em "Galeria de imagens" || style="text-align: center; | 5 || style="text-align: center; | 1
 +
|-
 +
|colspan="2"|03 - Clicar em "Álbuns" || style="text-align: center; | 5 || style="text-align: center; | 1
 +
|-
 +
|colspan="2"|03 - Clicar em "Novo álbum" || style="text-align: center; | 5 || style="text-align: center; | 1
 +
|-
 +
|colspan="2"|03 - Clicar em "Salvar" || style="text-align: center; | 10 || style="text-align: center; | 2
 +
|-
 +
!colspan="6"|Publicar uma página
 +
|-
 +
|colspan="2"|04 - Acessar home || style="text-align: center; | 5 || style="text-align: center; | 1
 +
|-
 +
|colspan="2"|04 - Realizar login || style="text-align: center; | 7 || style="text-align: center; | 1
 +
|-
 +
|colspan="2"|04 - Acessar administração do portal || style="text-align: center; | 5 || style="text-align: center; | 1
 +
|-
 +
|colspan="2"|04 - Clicar em "Páginas" || style="text-align: center; | 5 || style="text-align: center; | 1
 +
|-
 +
|colspan="2"|04 - Clicar em "Novo item" || style="text-align: center; | 5 || style="text-align: center; | 1
 +
|-
 +
|colspan="2"|04 - Preencher campo "Nome" || style="text-align: center; | 5 || style="text-align: center; | 1
 +
|-
 +
|colspan="2"|04 - Clicar em "Salvar" || style="text-align: center; | 10 || style="text-align: center; | 2
 +
|-
 +
!colspan="6"|Criar álbum usando flickr
 +
|-
 +
|colspan="2"|05 - Acessar home || style="text-align: center; | 5 || style="text-align: center; | 1
 +
|-
 +
|colspan="2"|05 - Realizar login || style="text-align: center; | 7 || style="text-align: center; | 1
 +
|-
 +
|colspan="2"|05 - Acessar administração do portal || style="text-align: center; | 5 || style="text-align: center; | 1
 +
|-
 +
|colspan="2"|05 - Clicar em "Galeria de imagens" || style="text-align: center; | 5 || style="text-align: center; | 1
 +
|-
 +
|colspan="2"|05 - Clicar em "Álbuns" || style="text-align: center; | 5 || style="text-align: center; | 1
 +
|-
 +
|colspan="2"|05 - Clicar em "Novo álbum" || style="text-align: center; | 5 || style="text-align: center; | 1
 +
|-
 +
|colspan="2"|05 - Marcar opção "Utilizar álbum flicker" || style="text-align: center; | 5 || style="text-align: center; | 1
 +
|-
 +
|colspan="2"|05 - Clicar em "Salvar" || style="text-align: center; | 10 || style="text-align: center; | 2
 +
|-
 +
|}
  
 
=== TOP queries mais lentas ===
 
=== TOP queries mais lentas ===
  
Em verificação.
+
* Item 1
 +
<syntaxhighlight lang="sql">
 +
WITH CTE (Id,PortalId, Visible,Active,Name,[Order],ParentId,Permalink,ComponentId,[Path],[System],RestrictAccess,NoAction,Link,TargetBlank,[State],nivel)
 +
          AS ( -- Anchor Member
 +
  SELECT  Id,
 +
                        PortalId,
 +
                        Visible,
 +
                        Active,
 +
                        Name,
 +
                        [Order],
 +
                        ParentId,
 +
                        Permalink,
 +
                        ComponentId,
 +
                        [Path],
 +
                        [System],
 +
                        RestrictAccess,
 +
NoAction,
 +
Link,
 +
TargetBlank,
 +
                        [State],
 +
                        0 AS nivel
 +
              FROM    dbo.Page WITH(NOLOCK)
 +
              WHERE    ParentId IS NULL AND
 +
PortalId = @portalId AND
 +
[State] = 1 AND --Inicia na página raiz
 +
InternalPage = 0
 +
              UNION ALL -- Recursive Member
 +
              SELECT  child.Id,
 +
                        child.PortalId,
 +
                        child.Visible,
 +
                        child.Active,
 +
                        child.Name,
 +
                        child.[Order],
 +
                        child.ParentId,
 +
                        child.Permalink,
 +
                        child.ComponentId,
 +
                        child.[Path],
 +
                        child.[System],
 +
                        child.RestrictAccess,
 +
child.NoAction,
 +
child.Link,
 +
child.TargetBlank,
 +
                        child.[State],
 +
                        nivel + 1
 +
              FROM    dbo.Page AS child WITH(NOLOCK)
 +
                        INNER JOIN CTE parent ON parent.Id = child.ParentId
 +
                        WHERE child.PortalId = @portalId AND  
 +
  child.[State] = 1
 +
              )
 +
              SELECT cte.Id,
 +
                        cte.PortalId,
 +
                        cte.Visible,
 +
                        cte.Active,
 +
                        cte.Name,
 +
                        cte.[Order],
 +
                        cte.ParentId,
 +
                        cte.Permalink,
 +
                        cte.ComponentId,
 +
                        cte.[Path],
 +
                        cte.[System],
 +
                        cte.RestrictAccess,
 +
cte.NoAction,
 +
cte.Link,
 +
cte.TargetBlank,
 +
                        cte.[State],
 +
                        cte.nivel,
 +
                        pagegroup.Id AS PageGroupId,
 +
                        pagegroup.GroupId
 +
                FROM CTE
 +
            LEFT JOIN dbo.PageGroup pagegroup WITH(NOLOCK) ON pagegroup.PageId = CTE.Id AND pagegroup.State = 1
 +
            ORDER BY cte.[Order]
 +
</syntaxhighlight>
 +
 
 +
* Item 2
 +
<syntaxhighlight lang="sql">
 +
WHILE (SELECT COUNT(*) FROM [dbo].[Page] WITH(NOLOCK) WHERE PortalId = @PortalId AND Permalink = @permalink) > 0
 +
</syntaxhighlight>
 +
 
 +
* Item 3
 +
<syntaxhighlight lang="sql">
 +
WHILE (SELECT COUNT(*) FROM News WITH(NOLOCK) WHERE Permalink = @permalink AND PortalId = @PortalId) > 0
 +
</syntaxhighlight>
 +
 
 +
* Item 4
 +
<syntaxhighlight lang="sql">
 +
SET @RESULTADO = @RESULTADO + (SELECT SUBSTRING(@SEMACENTOS,@QTD,1))
 +
</syntaxhighlight>
 +
 
 +
* Item 5
 +
<syntaxhighlight lang="sql">
 +
SET @CONT = (SELECT LEN(@COMACENTOS))
 +
</syntaxhighlight>
 +
 
 +
* Item 6
 +
<syntaxhighlight lang="sql">
 +
SET @LETRA_C = (SELECT SUBSTRING(@COMACENTOS,@QTD,1))
 +
</syntaxhighlight>
  
 
=== Resultado dos testes ===
 
=== Resultado dos testes ===
 
Nesta seção serão apresentados os resultados obtidos da execução dos testes.
 
Nesta seção serão apresentados os resultados obtidos da execução dos testes.
  
*'''Processador'''  
+
*'''Processador e disco'''  
  
 
: Contador: Percentagem de tempo ocioso.
 
: Contador: Percentagem de tempo ocioso.
 
: Descrição: Este contador fornece quanto tempo o disco permaneceu em estado de repouso, ou seja, todos os pedidos do sistema operacional para o disco ter sido concluída e há zero de pedidos pendentes. Este contador varia de 100 (ou seja, sempre ocioso) para 0 (ou seja, sempre ocupado).
 
: Descrição: Este contador fornece quanto tempo o disco permaneceu em estado de repouso, ou seja, todos os pedidos do sistema operacional para o disco ter sido concluída e há zero de pedidos pendentes. Este contador varia de 100 (ou seja, sempre ocioso) para 0 (ou seja, sempre ocupado).
 
: Limite recomendado: Abaixo de 75 %.
 
: Limite recomendado: Abaixo de 75 %.
: Análise: Em verificação.
+
: Análise: Encontra-se ocioso grande parte do tempo.
  
:::::: [[Arquivo:Em verificação.]]
+
:::::: [[Arquivo:2016-11-03 %TempoOcioso PortalCristoRei.png]]
  
 
: Contador: Percentagem de espaço livre.
 
: Contador: Percentagem de espaço livre.
 
: Descrição: Mostra a porcentagem do espaço total utilizável no disco lógico selecionado.
 
: Descrição: Mostra a porcentagem do espaço total utilizável no disco lógico selecionado.
 
: Limite recomendado: Acima de 25%.
 
: Limite recomendado: Acima de 25%.
: Análise: Em verificação.
+
: Análise: Dentro do limite recomendado.
  
:::::: [[Arquivo:Em verificação.]]
+
:::::: [[Arquivo:2016-11-03 %EspacoLivre PortalCristoRei.png]]
  
 
: Tempo total do processador.
 
: Tempo total do processador.
 
: Descrição: Mede a utilização da CPU de cada processador.
 
: Descrição: Mede a utilização da CPU de cada processador.
 
: Limite recomendado: Não exceder 80% por mais de 10 minutos ao longo do período de teste.
 
: Limite recomendado: Não exceder 80% por mais de 10 minutos ao longo do período de teste.
: Análise: Em verificação.
+
: Análise: Dentro do limite recomendado.
  
:::::: [[Arquivo:Em verificação.]]
+
:::::: [[Arquivo:2016-11-03 TempoToalProcessador PortalCristoRei.png]]
  
 
: Contador: Mudança de contexto.
 
: Contador: Mudança de contexto.
 
: Descrição: A mudança de contexto ocorre quando o kernel muda o processador de um segmento para outro, por exemplo, quando um segmento com uma prioridade maior do que o segmento em execução torna-se pronto.  
 
: Descrição: A mudança de contexto ocorre quando o kernel muda o processador de um segmento para outro, por exemplo, quando um segmento com uma prioridade maior do que o segmento em execução torna-se pronto.  
 
: Limite recomendado: Quanto menor melhor.
 
: Limite recomendado: Quanto menor melhor.
: Análise: Em verificação.
+
: Análise: Alta quantidade para a quantidade e usuários utilizando o sistema.
  
:::::: [[Arquivo:Em verificação.]]
+
:::::: [[Arquivo:2016-11-03 MudancaContexto PortalCristoRei.png]]
  
  
Linha 145: Linha 329:
 
: Descrição: Mede o número de páginas por segundo que são paginadas fora da memória RAM para a memória virtual.
 
: Descrição: Mede o número de páginas por segundo que são paginadas fora da memória RAM para a memória virtual.
 
: Limite recomendado: Se o número for alto indica falhas graves. O limite normalmente é de 20 páginas/s
 
: Limite recomendado: Se o número for alto indica falhas graves. O limite normalmente é de 20 páginas/s
: Análise: Em verificação.
+
: Análise: Os servidores web apresentaram uma grande quantidade de páginas por segundo.
  
:::::: [[Arquivo:Em verificação.]]
+
:::::: [[Arquivo:2016-11-04 PaginaS PortalCristoRei.png]]
  
 
: Contador: % Memória virtual comprometida.
 
: Contador: % Memória virtual comprometida.
 
: Descrição: Indica a percentagem da memória comprometida utilizada dentro do limite dado pela soma da memória RAM e Page File.
 
: Descrição: Indica a percentagem da memória comprometida utilizada dentro do limite dado pela soma da memória RAM e Page File.
 
: Limite recomendado: Abaixo de 75% e que não tenha grande variação no indicador.
 
: Limite recomendado: Abaixo de 75% e que não tenha grande variação no indicador.
: Análise: Em verificação.
+
: Análise: A aplicação ficou dentro do recomendado.Porém, se for levado em consideração a quantidade de usuários simulados a quantidade de hardware consumido é alta.
  
:::::: [[Arquivo:Em verificação.]]
+
:::::: [[Arquivo:2016-11-04 %MemoriaVirtualComprometida PortalCristoRei.png]]
  
  
Linha 160: Linha 344:
 
: Descrição: Indica quantidade de memória disponível para alocação em MBytes.
 
: Descrição: Indica quantidade de memória disponível para alocação em MBytes.
 
: Limite recomendado: Se o valor for inferior a 20/25 por cento de RAM instalada é uma indicação de memória insuficiente. Menos de 100 MB é uma indicação de que o sistema é muito carente de memória e paginação.
 
: Limite recomendado: Se o valor for inferior a 20/25 por cento de RAM instalada é uma indicação de memória insuficiente. Menos de 100 MB é uma indicação de que o sistema é muito carente de memória e paginação.
: Análise: Em verificação.
+
: Análise: A aplicação ficou dentro do recomendado.
  
:::::: [[Arquivo:Em verificação.]]
+
:::::: [[Arquivo:2016-11-04 memoriaDisponivel PortalCristoRei.png]]
  
  
Linha 170: Linha 354:
 
: Descrição: Indica quantos Kbytes foram enviados e recebidos a cada segundo pela interface de rede.
 
: Descrição: Indica quantos Kbytes foram enviados e recebidos a cada segundo pela interface de rede.
 
: Limite recomendado: Menor que 5 Mbytes para uma rede de 100Mbps, menor que 50 Mbytes para uma rede de 1000 Mbps. (Quanto menor melhor).
 
: Limite recomendado: Menor que 5 Mbytes para uma rede de 100Mbps, menor que 50 Mbytes para uma rede de 1000 Mbps. (Quanto menor melhor).
: Análise: Em verificação.
+
: Análise: O servidor de banco de dados consome grande parte da banda larga.
  
:::::: [[Arquivo:Em verificação.]]
+
:::::: [[Arquivo:2016-11-04 interfaceTotalDeRede PortalCristoRei.png]]
  
 
: Contador: Falhas de conexão (TCP)
 
: Contador: Falhas de conexão (TCP)
 
: Descrição: Este é o número bruto de conexões TCP que falharam desde que o servidor foi iniciado. Uma falha normalmente indica uma perda de dados em lugar no processo. A perda pode ocorrer em muitos locais. Esta poderia ser uma indicação de um outro dispositivo que está sendo para baixo, ou problemas com a configuração do lado do cliente do software.  
 
: Descrição: Este é o número bruto de conexões TCP que falharam desde que o servidor foi iniciado. Uma falha normalmente indica uma perda de dados em lugar no processo. A perda pode ocorrer em muitos locais. Esta poderia ser uma indicação de um outro dispositivo que está sendo para baixo, ou problemas com a configuração do lado do cliente do software.  
 
: Limite recomendado: Quanto menor melhor.
 
: Limite recomendado: Quanto menor melhor.
: Análise: Em verificação.
+
: Análise: É possível verificar uma grande quantidade de falhas, porém conforme alinhado com a equipe de dev, os erros ocorrem devido a estrutra utilizada pelo projeto, que dispara um erro/exceção e deste modo direcionada para o site correto.
  
:::::: [[Arquivo:Em verificação.]]
+
:::::: [[Arquivo:2016-11-04 conexoesFalhas PortalCristoRei.png]]
  
 +
*'''ARR'''
 +
 +
: Contador: Current application pool uptime
 +
: Descrição: Permite que você veja se o pedido foi reiniciado ou não.
 +
: Limite recomendado: Quanto menor melhor.
 +
: Análise: É possível verificar uma grande quantidade de reiniciamento para a quantidade de usuários simulados.
 +
 +
:::::: [[Arquivo:2016-11-04 currentApplicantionPoolUptime PortalCristoRei.png]]
  
 
*'''SQL'''  
 
*'''SQL'''  
Linha 187: Linha 379:
 
: Descrição: Indica o número em segundos que uma página vai ficar na área de buffers, sem referências.
 
: Descrição: Indica o número em segundos que uma página vai ficar na área de buffers, sem referências.
 
: Limite recomendado: Quanto menor melhor.
 
: Limite recomendado: Quanto menor melhor.
: Análise:  Em verificação.
+
: Análise:  Aplicação ficou dentro do recomendado.
  
:::::: [[Arquivo:Em verificação.]]
+
:::::: [[Arquivo:2016-11-04 expectativaDeVida PortalCristoRei.png]]
  
 
: Contador: Request bloqueados.
 
: Contador: Request bloqueados.
: Descrição: Informa a quantidade de resquest bloqueados.
+
: Descrição: Indica o número dos requests bloqueados durante a execução dos testes.
: Limite recomendado: Em verificação.
+
: Limite recomendado: Quanto menor melhor.
 +
: Análise:  Aplicação possui uma grande quantidade de resquests bloqueados para a quantidade de usuário simulada, podendo resultar em deadlock.
  
:::::: [[Arquivo:Em verificação.]]
+
:::::: [[Arquivo:2016-11-04 requestsBloqeuados PortalCristoRei.png]]
  
 +
*'''ASP.NET'''
  
*'''Aplicação'''
+
: Contador: Request por segundo.
 +
: Descrição: Indica o número de requests por segundo.
 +
: Limite recomendado: Quanto maior melhor. Em caso de utilização de mais de um servidor web deve-se estar próximo a quantidade de requests.
 +
: Análise: Não há grande variação de request entre os servidores web utilizados nos testes.
  
: Dado: Sampler
+
:::::: [[Arquivo:2016-11-04 requestsPorSegundo PortalCristoRei.png]]
:Descrição: Informa a quantidade threads.
+
: Limite recomendado: Em verificação.
+
  
:::::: [[Arquivo:Em verificação.]]
+
: Contador: Total de sessões .
 +
: Descrição: O número total de sessões. Este contador é suportado apenas com estado de sessões na memória.
 +
: Limite recomendado: Proporcional a quantidade de usuários simulados.
 +
: Análise: Aplicação está dentro do recomendado.
  
 +
:::::: [[Arquivo:2016-11-04 sessoesTotais PortalCristoRei.png]]
  
: Dado: 90% dos melhores tempos de resposta
+
*'''Aplicação'''
:Descrição: Informa os 90% melhores tempos de respostas.
+
: Limite recomendado: Em verificação.
+
  
:::::: [[Arquivo:Em verificação.]]
+
: Dado: Sampler
 +
: Descrição: Informa a quantidade threads.
 +
: Limite recomendado: A maior quantidade de requisições está no acesso a home, realização do login, acesso a notícia e acesso a uma tela do menu.
  
 +
:::::: [[Arquivo:2016-11-04 sampler PortalCristoRei.png]]
  
: Dado: Porcentagem de erros
+
: Dado: Tempo médio de resposta.
:Descrição: Informa porcentagem de erro no sistema durante os testes.
+
: Descrição: Informa o tempo médio de resposta.
: Limite recomendado: Em verificação.
+
: Limite recomendado: Quanto menor melhor.
  
:::::: [[Arquivo:Em verificação.]]
+
:::::: [[Arquivo:2016-11-04 tempoDeResposta PortalCristoRei.png]]
 +
 
 +
: Dado: 90% dos melhores tempos de resposta
 +
: Descrição: Informa os 90% melhores tempos de respostas.
 +
: Limite recomendado: Quanto menor melhor.
  
 +
:::::: [[Arquivo:2016-11-04 90%MelhoresTemposResposta PortalCristoRei.png]]
  
 
: Dado: Vazão
 
: Dado: Vazão
 
:Descrição: Informa a quantidade de dados transferidos.
 
:Descrição: Informa a quantidade de dados transferidos.
  
:::::: [[Arquivo:Em verificação.]]
+
:::::: [[Arquivo:2016-11-04 vazao PortalCristoRei.png]]

Edição atual tal como às 17h14min de 21 de novembro de 2016

Sistemas Verificados

  • Portal Institucional, versão 1.5.9.0
  • CoreSSO, versão 2.0.5.0

Verificação de Desempenho

Observação do teste

Durante a construção dos cenários de testes foram encontrados alguns bugs, segue relação dos mesmos abaixo:

  • Erro 404:
GET  vendor_js?v=J60IUWWvdrONmKZrXJPflFG8nW71EVrNbp9fxk0j8XU1:1
GET  http://portalinstitucional.loadtest//Areas/Main/Assets/js/resources/lang/contact-us-MSTECH.json
The controller for path '/bundles/famfamfam-flags.png' was not found or does not implement IController.
The controller for path '/images/borderbottom.gif' was not found or does not implement IController.
  • Erro no google maps:
    s?v=3.exp&signed_in=true&libraries=places:34 
    
    vendor_js?v=J60IUWWvdrONmKZrXJPflFG8nW71EVrNbp9fxk0j8XU1:1 Uncaught Error: [$injector:nomod] Module 'gettext' is not available! You ither misspelled the module name or forgot to load it. If registering a module ensure that you specify the dependencies as the second argument.
    
    http://errors.angularjs.org/1.2.26/$injector/nomod?p0=gettext
    
  • Salva validação de campo na tela como erro no banco do core.
    erroBase: Corpo é um campo obrigatório.
    tipoErro: MSTech.Validation.Exceptions.ValidationException
    errDescricao: ******************** 24/10/2016 07:51:17 ********************
    Exception Type: MSTech.Validation.Exceptions.ValidationException
    Exception: Corpo é um campo obrigatório.
    Source: MSTech.Portal.BusinessModel
    Stack Trace: 
       at MSTech.Portal.BusinessModel.NewsModel.Validade(News news) in d:\b\Portal\PortalInstitucional_Main.Revision\src\Portal\Main\src\MSTech.Portal\MSTech.Portal.BusinessModel\NewsModel.cs:line 169
       at MSTech.Portal.BusinessModel.NewsModel.Save(News resource) in d:\b\Portal\PortalInstitucional_Main.Revision\src\Portal\Main\src\MSTech.Portal\MSTech.Portal.BusinessModel\NewsModel.cs:line 33
       at MSTech.Portal.Institutional.Areas.Admin.Controllers.NewsController.Save(News news, String[] arrayTags, String[] arrayAreas, String[] UnitsId, Boolean checkArea) in d:\b\Portal\PortalInstitucional_Main.Revision\src\Portal\Main\src\MSTech.Portal\MSTech.Portal.Institutional\Areas\Admin\Controllers\NewsController.cs:line 147
    
  • Erro ao fazer login
The controller for path '/images/borderbottom.gif' was not found or does not implement IController.
An item with the same key has already been added.
The view 'Error' or its master was not found or no view engine supports the searched locations. The following locations were searched:
~/Areas/Admin/Views/ImageGallery/Error.aspx
~/Areas/Admin/Views/ImageGallery/Error.ascx
~/Areas/Admin/Views/Shared/Error.aspx
~/Areas/Admin/Views/Shared/Error.ascx
~/Views/ImageGallery/Error.aspx
~/Views/ImageGallery/Error.ascx
~/Views/Shared/Error.aspx
~/Views/Shared/Error.ascx
~/Areas/Admin/Views/ImageGallery/Error.cshtml
~/Areas/Admin/Views/ImageGallery/Error.vbhtml
~/Areas/Admin/Views/Shared/Error.cshtml
~/Areas/Admin/Views/Shared/Error.vbhtml
~/Views/ImageGallery/Error.cshtml
~/Views/ImageGallery/Error.vbhtml
~/Views/Shared/Error.cshtml
~/Views/Shared/Error.vbhtml
The view 'SamlError' or its master was not found or no view engine supports the searched locations. The following locations were searched:
~/Areas/Admin/Views/Account/SamlError.aspx
~/Areas/Admin/Views/Account/SamlError.ascx
~/Areas/Admin/Views/Shared/SamlError.aspx
~/Areas/Admin/Views/Shared/SamlError.ascx
~/Views/Account/SamlError.aspx
~/Views/Account/SamlError.ascx
~/Views/Shared/SamlError.aspx
~/Views/Shared/SamlError.ascx
~/Areas/Admin/Views/Account/SamlError.cshtml
~/Areas/Admin/Views/Account/SamlError.vbhtml
~/Areas/Admin/Views/Shared/SamlError.cshtml
~/Areas/Admin/Views/Shared/SamlError.vbhtml
~/Views/Account/SamlError.cshtml
~/Views/Account/SamlError.vbhtml
~/Views/Shared/SamlError.cshtml
~/Views/Shared/SamlError.vbhtml

Para a realização dos testes foram utilizados:

  • 1 Servidor SQL
  • 2 Servidores WEB
  • 1 Controller
  • 1 Test agent

Análise do teste

Durante os testes foi possível observar que o processador possui uma elevada taxa de mudança de contexto, o que significa que o processador é compartilhado repetidamente, por exemplo, por muitos segmentos de igual prioridade. A alta taxa de contexto-chave muitas vezes indica que existem muitos segmentos que competem para os processadores no sistema. A taxa de trocas de contexto também pode afetar o desempenho de computadores com múltiplos processadores.

Os servidores web possuem um alto número de páginas por segundo, podendo indicar uma falta de memória resultando na utilização de memória virtual pela aplicação, resultando em paginação. No servidor ARR foi verificada uma que os pedidos tem uma grande quantidade de reiniciamento.

No bando de dados foi observado que a vidas das páginas de dados é menos de 5 minutos, sendo removidas da memória uma vez que essa duração tenha decorrido. A PLE está abaixo dos valores recomendados e permanece deste modo no decorrer dos testes, em caso da queda ocorrer devido a execução, por exemplo, do DBCC CHECKDB, não há motivos para preocupação. Devido a ocorrência de paginação é necessário analisar queries e os índices e confirmar se estão otimizados. Além disso, foi observado, um elevado número de requests bloqueados, o que pode acabar gerando lentidão para vários usuários e podendo ocorrer deadlock's, neste caso é recomendado a os hints adequados para cada tipo de operação e comando SQL.

A aplicação realiza uma grande quantidade de requests (mais de 100 requests) para carregar uma única página com menos de 3MB. Além de possuir elementos que não existem em nenhuma página e que resultam em erro 404.

Ai fila do processador está abaixo do valor recomendado.

Cenários de uso

Cenário: Teste main
Ação realizada Think Time: Atraso constante (segundos) Think Time: Desvio (segundos)
01 - Acessar home 10 5
01 - Realizar login 7 1
01 - Acessar notícia 10 2
01 - Acessar tela do menu 5 1
Cenário: Teste do admin
Criar notícia
Ação realizada Think Time: Atraso constante (segundos) Think Time: Desvio (segundos)
02 - Acessar home 5 1
02 - Realizar login 7 1
02 - Acessar tela de administração 5 1
02 - Clicar em "Notícia" 5 1
02 - Clicar em "Nova notícia" 5 1
02 - Preencher campo "Título" 5 1
02 - Clicar em "Salvar" 10 2
Criar álbum sem usar flickr
03 - Acessar home 5 1
03 - Realizar login 7 1
03 - Acessar a administração do portal 5 1
03 - Clicar em "Galeria de imagens" 5 1
03 - Clicar em "Álbuns" 5 1
03 - Clicar em "Novo álbum" 5 1
03 - Clicar em "Salvar" 10 2
Publicar uma página
04 - Acessar home 5 1
04 - Realizar login 7 1
04 - Acessar administração do portal 5 1
04 - Clicar em "Páginas" 5 1
04 - Clicar em "Novo item" 5 1
04 - Preencher campo "Nome" 5 1
04 - Clicar em "Salvar" 10 2
Criar álbum usando flickr
05 - Acessar home 5 1
05 - Realizar login 7 1
05 - Acessar administração do portal 5 1
05 - Clicar em "Galeria de imagens" 5 1
05 - Clicar em "Álbuns" 5 1
05 - Clicar em "Novo álbum" 5 1
05 - Marcar opção "Utilizar álbum flicker" 5 1
05 - Clicar em "Salvar" 10 2

TOP queries mais lentas

  • Item 1
WITH CTE (Id,PortalId, Visible,Active,Name,[Order],ParentId,Permalink,ComponentId,[Path],[System],RestrictAccess,NoAction,Link,TargetBlank,[State],nivel)
          AS ( -- Anchor Member 
			   SELECT   Id,
                        PortalId,
                        Visible,
                        Active,
                        Name,
                        [Order],
                        ParentId,
                        Permalink,
                        ComponentId,
                        [Path],
                        [System],
                        RestrictAccess,
						NoAction,
						Link,
						TargetBlank,
                        [State],
                        0 AS nivel
               FROM     dbo.Page WITH(NOLOCK)
               WHERE    ParentId IS NULL AND 
						PortalId = @portalId AND						
						[State] = 1 AND --Inicia na página raiz
						InternalPage = 0
               UNION ALL -- Recursive Member 
               SELECT   child.Id,
                        child.PortalId,
                        child.Visible,
                        child.Active,
                        child.Name,
                        child.[Order],
                        child.ParentId,
                        child.Permalink,
                        child.ComponentId,
                        child.[Path],
                        child.[System],
                        child.RestrictAccess,
						child.NoAction,
						child.Link,
						child.TargetBlank,				
                        child.[State],
                        nivel + 1
               FROM     dbo.Page AS child WITH(NOLOCK)						
                        INNER JOIN CTE parent ON parent.Id = child.ParentId
                        WHERE child.PortalId = @portalId AND							  
							  child.[State] = 1
              )
              SELECT	cte.Id,
                        cte.PortalId,
                        cte.Visible,
                        cte.Active,
                        cte.Name,
                        cte.[Order],
                        cte.ParentId,
                        cte.Permalink,
                        cte.ComponentId,
                        cte.[Path],
                        cte.[System],
                        cte.RestrictAccess,
						cte.NoAction,
						cte.Link,
						cte.TargetBlank,
                        cte.[State],
                        cte.nivel,
                        pagegroup.Id AS PageGroupId,
                        pagegroup.GroupId
                FROM CTE
            LEFT JOIN dbo.PageGroup pagegroup WITH(NOLOCK) ON pagegroup.PageId = CTE.Id AND pagegroup.State = 1
            ORDER BY cte.[Order]
  • Item 2
WHILE (SELECT COUNT(*) FROM [dbo].[Page] WITH(NOLOCK) WHERE PortalId = @PortalId AND Permalink = @permalink) > 0
  • Item 3
WHILE (SELECT COUNT(*) FROM News WITH(NOLOCK) WHERE Permalink = @permalink AND PortalId = @PortalId) > 0
  • Item 4
SET @RESULTADO = @RESULTADO + (SELECT SUBSTRING(@SEMACENTOS,@QTD,1))
  • Item 5
SET @CONT = (SELECT LEN(@COMACENTOS))
  • Item 6
SET @LETRA_C = (SELECT SUBSTRING(@COMACENTOS,@QTD,1))

Resultado dos testes

Nesta seção serão apresentados os resultados obtidos da execução dos testes.

  • Processador e disco
Contador: Percentagem de tempo ocioso.
Descrição: Este contador fornece quanto tempo o disco permaneceu em estado de repouso, ou seja, todos os pedidos do sistema operacional para o disco ter sido concluída e há zero de pedidos pendentes. Este contador varia de 100 (ou seja, sempre ocioso) para 0 (ou seja, sempre ocupado).
Limite recomendado: Abaixo de 75 %.
Análise: Encontra-se ocioso grande parte do tempo.
2016-11-03 %TempoOcioso PortalCristoRei.png
Contador: Percentagem de espaço livre.
Descrição: Mostra a porcentagem do espaço total utilizável no disco lógico selecionado.
Limite recomendado: Acima de 25%.
Análise: Dentro do limite recomendado.
2016-11-03 %EspacoLivre PortalCristoRei.png
Tempo total do processador.
Descrição: Mede a utilização da CPU de cada processador.
Limite recomendado: Não exceder 80% por mais de 10 minutos ao longo do período de teste.
Análise: Dentro do limite recomendado.
2016-11-03 TempoToalProcessador PortalCristoRei.png
Contador: Mudança de contexto.
Descrição: A mudança de contexto ocorre quando o kernel muda o processador de um segmento para outro, por exemplo, quando um segmento com uma prioridade maior do que o segmento em execução torna-se pronto.
Limite recomendado: Quanto menor melhor.
Análise: Alta quantidade para a quantidade e usuários utilizando o sistema.
2016-11-03 MudancaContexto PortalCristoRei.png


  • Memória
Contador: Páginas/segundo.
Descrição: Mede o número de páginas por segundo que são paginadas fora da memória RAM para a memória virtual.
Limite recomendado: Se o número for alto indica falhas graves. O limite normalmente é de 20 páginas/s
Análise: Os servidores web apresentaram uma grande quantidade de páginas por segundo.
2016-11-04 PaginaS PortalCristoRei.png
Contador: % Memória virtual comprometida.
Descrição: Indica a percentagem da memória comprometida utilizada dentro do limite dado pela soma da memória RAM e Page File.
Limite recomendado: Abaixo de 75% e que não tenha grande variação no indicador.
Análise: A aplicação ficou dentro do recomendado.Porém, se for levado em consideração a quantidade de usuários simulados a quantidade de hardware consumido é alta.
2016-11-04 %MemoriaVirtualComprometida PortalCristoRei.png


Contador: Memória disponível em MBytes.
Descrição: Indica quantidade de memória disponível para alocação em MBytes.
Limite recomendado: Se o valor for inferior a 20/25 por cento de RAM instalada é uma indicação de memória insuficiente. Menos de 100 MB é uma indicação de que o sistema é muito carente de memória e paginação.
Análise: A aplicação ficou dentro do recomendado.
2016-11-04 memoriaDisponivel PortalCristoRei.png


  • Network
Contador: Kbytes totais pela interface de rede.
Descrição: Indica quantos Kbytes foram enviados e recebidos a cada segundo pela interface de rede.
Limite recomendado: Menor que 5 Mbytes para uma rede de 100Mbps, menor que 50 Mbytes para uma rede de 1000 Mbps. (Quanto menor melhor).
Análise: O servidor de banco de dados consome grande parte da banda larga.
2016-11-04 interfaceTotalDeRede PortalCristoRei.png
Contador: Falhas de conexão (TCP)
Descrição: Este é o número bruto de conexões TCP que falharam desde que o servidor foi iniciado. Uma falha normalmente indica uma perda de dados em lugar no processo. A perda pode ocorrer em muitos locais. Esta poderia ser uma indicação de um outro dispositivo que está sendo para baixo, ou problemas com a configuração do lado do cliente do software.
Limite recomendado: Quanto menor melhor.
Análise: É possível verificar uma grande quantidade de falhas, porém conforme alinhado com a equipe de dev, os erros ocorrem devido a estrutra utilizada pelo projeto, que dispara um erro/exceção e deste modo direcionada para o site correto.
2016-11-04 conexoesFalhas PortalCristoRei.png
  • ARR
Contador: Current application pool uptime
Descrição: Permite que você veja se o pedido foi reiniciado ou não.
Limite recomendado: Quanto menor melhor.
Análise: É possível verificar uma grande quantidade de reiniciamento para a quantidade de usuários simulados.
2016-11-04 currentApplicantionPoolUptime PortalCristoRei.png
  • SQL
Contador: Expectativa de vida da página.
Descrição: Indica o número em segundos que uma página vai ficar na área de buffers, sem referências.
Limite recomendado: Quanto menor melhor.
Análise: Aplicação ficou dentro do recomendado.
2016-11-04 expectativaDeVida PortalCristoRei.png
Contador: Request bloqueados.
Descrição: Indica o número dos requests bloqueados durante a execução dos testes.
Limite recomendado: Quanto menor melhor.
Análise: Aplicação possui uma grande quantidade de resquests bloqueados para a quantidade de usuário simulada, podendo resultar em deadlock.
2016-11-04 requestsBloqeuados PortalCristoRei.png
  • ASP.NET
Contador: Request por segundo.
Descrição: Indica o número de requests por segundo.
Limite recomendado: Quanto maior melhor. Em caso de utilização de mais de um servidor web deve-se estar próximo a quantidade de requests.
Análise: Não há grande variação de request entre os servidores web utilizados nos testes.
2016-11-04 requestsPorSegundo PortalCristoRei.png
Contador: Total de sessões .
Descrição: O número total de sessões. Este contador é suportado apenas com estado de sessões na memória.
Limite recomendado: Proporcional a quantidade de usuários simulados.
Análise: Aplicação está dentro do recomendado.
2016-11-04 sessoesTotais PortalCristoRei.png
  • Aplicação
Dado: Sampler
Descrição: Informa a quantidade threads.
Limite recomendado: A maior quantidade de requisições está no acesso a home, realização do login, acesso a notícia e acesso a uma tela do menu.
2016-11-04 sampler PortalCristoRei.png
Dado: Tempo médio de resposta.
Descrição: Informa o tempo médio de resposta.
Limite recomendado: Quanto menor melhor.
2016-11-04 tempoDeResposta PortalCristoRei.png
Dado: 90% dos melhores tempos de resposta
Descrição: Informa os 90% melhores tempos de respostas.
Limite recomendado: Quanto menor melhor.
2016-11-04 90%MelhoresTemposResposta PortalCristoRei.png
Dado: Vazão
Descrição: Informa a quantidade de dados transferidos.
2016-11-04 vazao PortalCristoRei.png