Portal Cristo Rei 1.5.9.0
Índice
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.
- 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.
- 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.
- 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.
- 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.
- 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.
- 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.
- 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.
- 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.
- 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.
- 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.
- 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.
- 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.
- 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.
- 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.
- Dado: Tempo médio de resposta.
- Descrição: Informa o tempo médio de resposta.
- Limite recomendado: Quanto menor melhor.
- Dado: 90% dos melhores tempos de resposta
- Descrição: Informa os 90% melhores tempos de respostas.
- Limite recomendado: Quanto menor melhor.
- Dado: Vazão
- Descrição: Informa a quantidade de dados transferidos.