Mudanças entre as edições de "Atribuição 1.0.5.0"
(→Cenários de uso) |
(→Resultado dos testes) |
||
(6 revisões intermediárias por 2 usuários não estão sendo mostradas) | |||
Linha 5: | Linha 5: | ||
*Gestão acadêmica, versão 1.65.0.0 | *Gestão acadêmica, versão 1.65.0.0 | ||
*Gestão acadêmica API, versão 1.61.0.0 | *Gestão acadêmica API, versão 1.61.0.0 | ||
− | |||
− | |||
− | |||
− | |||
− | |||
== Verificação de Desempenho == | == Verificação de Desempenho == | ||
Linha 101: | Linha 96: | ||
|} | |} | ||
− | === TOP | + | === TOP queries mais lentas === |
− | + | * Item 1 | |
+ | : Média do CPU: 6256 | ||
+ | : Tempo decorrido: 18156 | ||
+ | <syntaxhighlight lang="sql" line="1" > | ||
+ | INSERT INTO @teachersAttributed | ||
+ | SELECT a.TeacherEnrollment_Id | ||
+ | FROM Attribution AS a WITH(NOLOCK) | ||
+ | INNER JOIN AttributionStep AS ats WITH(NOLOCK) | ||
+ | ON a.Id = ats.Attribution_Id | ||
+ | WHERE | ||
+ | a.Process_Id = @processId | ||
+ | AND ats.Step_Id = @stepId | ||
+ | AND ats.Situation = 2 | ||
+ | </syntaxhighlight> | ||
+ | |||
+ | *Item 2 | ||
+ | : Média do CPU: 839 | ||
+ | : Tempo decorrido: 75624 | ||
+ | |||
+ | <syntaxhighlight lang="sql" line="1" > | ||
+ | SELECT TOP (1) | ||
+ | Result.[Rank] | ||
+ | FROM ( | ||
+ | SELECT | ||
+ | lc.[Rank] AS [Rank] | ||
+ | FROM | ||
+ | ListContent AS lc WITH(NOLOCK) | ||
+ | INNER JOIN TeacherEnrollment AS te WITH(NOLOCK) | ||
+ | ON lc.TeacherEnrollment_Id = te.Id | ||
+ | AND te.State = 1 | ||
+ | INNER JOIN JourneyList AS jl WITH(NOLOCK) | ||
+ | ON te.JourneyList_Id = jl.Id | ||
+ | AND jl.State = 1 | ||
+ | WHERE | ||
+ | lc.State = 1 | ||
+ | AND lc.Discipline_Id = @disciplineId | ||
+ | AND lc.ListImport_Id = @listImportId | ||
+ | AND ((@localExecution = 1 AND lc.School_Id = @schoolId) OR (@localExecution = 2)) | ||
+ | AND NOT EXISTS (SELECT 1 FROM @teachersAttributed ta WHERE ta.TeacherEnrollment_Id = lc.TeacherEnrollment_Id) | ||
+ | ) AS Result | ||
+ | ORDER BY Result.[Rank] ASC | ||
+ | </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: | + | : Análise: O disco fica ocioso. |
− | :::::: [[Arquivo:]] | + | :::::: [[Arquivo:2016-10-20 AtribuicaoAulas TempoOcioso.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: | + | : Análise: Aplicação está dentro do recomendado. |
− | :::::: [[Arquivo:]] | + | :::::: [[Arquivo:2016-10-20 Atribuicao EspacoLivre.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: | + | : Análise: Aplicação está dentro do recomendando. |
− | :::::: [[Arquivo:]] | + | :::::: [[Arquivo:2016-10-20 Atribuicao TempoTotalProcessador.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: | + | : Análise: Grande variação entre os servidores WEB quando executado o cenário 2. |
− | :::::: [[Arquivo:]] | + | :::::: [[Arquivo:2016-10-20 Atribuicao MudancaContexto.png]] |
Linha 145: | Linha 181: | ||
: 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: | + | : Análise: Grande quantidade de páginas quando executado o cenário 2. |
− | :::::: [[Arquivo:]] | + | :::::: [[Arquivo:2016-10-20 Atribuicao PaginasSegundo.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: | + | : Análise: Aplicação está dentro do recomendado. |
− | :::::: [[Arquivo:]] | + | :::::: [[Arquivo:2016-10-20 Atribuicao MemoriaVirtualComprometida.png]] |
Linha 162: | Linha 198: | ||
: Análise: Em verificação | : Análise: Em verificação | ||
− | :::::: [[Arquivo:]] | + | :::::: [[Arquivo:2016-10-20 Atribuicao MemoriaDisponivel.png]] |
Linha 170: | Linha 206: | ||
: 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: | + | : Análise: Aplicação está dentro do recomendado. |
− | :::::: [[Arquivo:]] | + | :::::: [[Arquivo:2016-10-20 Atribuicao InterfaceTotalRede.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: | + | : Análise: O servidor WEB1 possui uma quantidade superior de falhas. |
− | :::::: [[Arquivo:]] | + | :::::: [[Arquivo:2016-10-20 Atribuicao ConexoesFalhas.png]] |
Linha 186: | Linha 222: | ||
: Contador: Expectativa de vida da página. | : 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. | : Descrição: Indica o número em segundos que uma página vai ficar na área de buffers, sem referências. | ||
− | : Limite recomendado: | + | : Limite recomendado: Quanto menor melhor. |
+ | : Análise: No cenário 2 a expectativa de vida é superior. | ||
− | :::::: [[Arquivo: | + | :::::: [[Arquivo:2016-10-20 Atribuicao ExpectativaVidaPagina.png]] |
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
: Contador: Request bloqueados. | : Contador: Request bloqueados. | ||
: Descrição: Informa a quantidade de resquest bloqueados. | : Descrição: Informa a quantidade de resquest bloqueados. | ||
− | : Limite recomendado: | + | : Limite recomendado: Quanto menor melhor. |
+ | |||
+ | :::::: [[Arquivo:2016-10-20 Atribuicao RequestsBloqueados.png]] | ||
+ | |||
+ | |||
+ | *'''Aplicação''' | ||
+ | |||
+ | : Dado: Sampler | ||
+ | :Descrição: Informa a quantidade threads. | ||
+ | : Limite recomendado: Quanto maior melhor. | ||
+ | |||
+ | :::::: [[Arquivo:2016-10-20 Atribuicao Sampler.png]] | ||
+ | |||
+ | |||
+ | : Dado: 90% dos melhores tempos de resposta | ||
+ | :Descrição: Informa os 90% melhores tempos de respostas. | ||
+ | : Limite recomendado: Quanto menor melhor. | ||
+ | |||
+ | :::::: [[Arquivo:2016-10-20 Atribuicao 90MelhoresTemposRespostas.png]] | ||
+ | |||
+ | |||
+ | : Dado: Porcentagem de erros | ||
+ | :Descrição: Informa porcentagem de erro no sistema durante os testes. | ||
+ | : Limite recomendado: Quanto menor melhor. | ||
+ | |||
+ | :::::: [[Arquivo:2016-10-20 Atribuicao PorcentagemErros.png]] | ||
+ | |||
+ | |||
+ | : Dado: Vazão | ||
+ | :Descrição: Informa a quantidade de dados transferidos. | ||
− | :::::: [[Arquivo:]] | + | :::::: [[Arquivo:2016-10-20 Atribuicao RequestsSegundo.png]] |
Edição atual tal como às 17h13min de 21 de novembro de 2016
Índice
Sistemas Verificados
- Atribuição de aula, versão 1.0.5.0
- CoreSSO, versão 1.28.0.0
- Gestão acadêmica, versão 1.65.0.0
- Gestão acadêmica API, versão 1.61.0.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:
- Imagens faltando no carregamento da página.
- Erro ao abrir o painel de controle.
- O sistema não exibe loader para o usuário, este ponto não é interessante para a experiência do usuário, tendo em vista que a impressão que o sistema esta travado.
- Na tela de cadastro de vaga ao clicar em "Enviar" não é exibido nenhuma informação que a página está carregando e é possível interagir com a tela. Deste modo é possível forçar um erro no sistema ao clicar novamente no botão "Enviar".
- Na tela de cadastro de vaga ao clicar em "Enviar" novamente enquanto a tela carrega o pop-up exibido não habilita as ações dos botões.
- Não são todas as mensagens de erro (mensagens com o fundo vermelho) que são salvas no banco de dados.
Para a realização dos teste foi utilizado:
- 1 Servidor de banco dados: SQL
- 1 Servidor de banco de dados: Mongo
- 1 Servidor ARR
- 2 Servidores web (denominados WEB1 e WEB2)
- 1 Controller
- 1 Test agent
Para melhor visualização nos relatórios o cenário 1 foi abreviado para C1 e o cenário 2 para C2.
Análise do teste
- Dados obtidos nos dois cenários de teste
A aplicação possui diferentes comportamentos com relação ao hardware utilizado no momento de considerar ou não a SEDE. O processamento possui grande variação entre os webs quando a atribuição de aulas considera o vinculo SEDE, um dos servidores web acaba tendo processamento superior. Neste cenário, enquanto a distribuição pelo ARR estava em 52,64% para o WEB1 e 47,36 para o WEB2 a diferença de processamento entre eles foi superior a 30%. Quando, na atribuição, não é considerada o vínculo, o processamento entre os servidores web é mais equilibrado.
O mesmo cenário de variação observada no processador pode ser observada na memória e na rede enquanto os testes eram executados. Referente ao cenário 2, 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.
Foi possível observar os pontos listados abaixo durante a execução dos teste:
- 1) Quando considerado o vínculo SEDE, a memória virtual comprometida dos servidores web ficam próximos da utilização do servidor de banco de dados. Quando não é considerado, o servidor mais utilizado é o do banco de dados, enquanto o ARR, WEB01, e WEB02 possui uma quantidade próxima de utilização.
- 2) Quanto maior a quantidade de usuários no cenário 2 menor o tempo ocioso do disco, enquanto no cenário 1 o processamento é estável.
- 3) A fila do disco está dentro do valor recomendado.
- 4) A média da quantidade de sessões foi superior no cenário 1.
- 5) A expectativa de vida da página é superior quando o cenário 2 é executado.
Cenários de uso
Cenário de uso #1 - Atribuição com lista de importação que não considera vínculo sede. | |||||
---|---|---|---|---|---|
Ação realizada | Think Time: Atraso constante (segundos) | Think Time: Desvio (segundos) | |||
1 - Acessar tela de login | 5 | 1 | |||
1 - Realizar login | 15 | 3 | |||
1 - Selecionar sistema | 6 | 1 | |||
2 - Acessar tela "Atribuição de aula" | 5 | 1 | |||
2 - Preencher campo "Fase" | 7 | 2 | |||
2 - Preencher campo "Cenário" | 7 | 2 | |||
2 - Clicar em "Pesquisar" | 4 | 1 | |||
2 - Clicar em "Concluir" | 10 | 3 | |||
2 - Acessar painel de vagas | 10 | 3 |
Cenário de uso #2 - Atribuição com lista de importação que não considera vínculo sede. | |||||
---|---|---|---|---|---|
Ação realizada | Think Time: Atraso constante (segundos) | Think Time: Desvio (segundos) | |||
1 - Acessar tela de login | 5 | 1 | |||
1 - Realizar login | 15 | 3 | |||
1 - Selecionar sistema | 6 | 1 | |||
2 - Acessar tela "Atribuição de aula" | 5 | 1 | |||
2 - Preencher campo "Fase" | 7 | 2 | |||
2 - Preencher campo "Cenário" | 7 | 2 | |||
2 - Clicar em "Pesquisar" | 4 | 1 | |||
2 - Clicar em "Concluir" | 10 | 3 | |||
2 - Acessar painel de vagas | 10 | 3 |
TOP queries mais lentas
- Item 1
- Média do CPU: 6256
- Tempo decorrido: 18156
1 INSERT INTO @teachersAttributed
2 SELECT a.TeacherEnrollment_Id
3 FROM Attribution AS a WITH(NOLOCK)
4 INNER JOIN AttributionStep AS ats WITH(NOLOCK)
5 ON a.Id = ats.Attribution_Id
6 WHERE
7 a.Process_Id = @processId
8 AND ats.Step_Id = @stepId
9 AND ats.Situation = 2
- Item 2
- Média do CPU: 839
- Tempo decorrido: 75624
1 SELECT TOP (1)
2 Result.[Rank]
3 FROM (
4 SELECT
5 lc.[Rank] AS [Rank]
6 FROM
7 ListContent AS lc WITH(NOLOCK)
8 INNER JOIN TeacherEnrollment AS te WITH(NOLOCK)
9 ON lc.TeacherEnrollment_Id = te.Id
10 AND te.State = 1
11 INNER JOIN JourneyList AS jl WITH(NOLOCK)
12 ON te.JourneyList_Id = jl.Id
13 AND jl.State = 1
14 WHERE
15 lc.State = 1
16 AND lc.Discipline_Id = @disciplineId
17 AND lc.ListImport_Id = @listImportId
18 AND ((@localExecution = 1 AND lc.School_Id = @schoolId) OR (@localExecution = 2))
19 AND NOT EXISTS (SELECT 1 FROM @teachersAttributed ta WHERE ta.TeacherEnrollment_Id = lc.TeacherEnrollment_Id)
20 ) AS Result
21 ORDER BY Result.[Rank] ASC
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: O disco fica ocioso.
- 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: Aplicação está dentro do 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: Aplicação está dentro do recomendando.
- 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: Grande variação entre os servidores WEB quando executado o cenário 2.
- 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: Grande quantidade de páginas quando executado o cenário 2.
- 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: Aplicação está dentro do recomendado.
- 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: Em verificação
- 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: Aplicação está dentro do recomendado.
- 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: O servidor WEB1 possui uma quantidade superior de falhas.
- 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: No cenário 2 a expectativa de vida é superior.
- Contador: Request bloqueados.
- Descrição: Informa a quantidade de resquest bloqueados.
- Limite recomendado: Quanto menor melhor.
- Aplicação
- Dado: Sampler
- Descrição: Informa a quantidade threads.
- Limite recomendado: Quanto maior melhor.
- Dado: 90% dos melhores tempos de resposta
- Descrição: Informa os 90% melhores tempos de respostas.
- Limite recomendado: Quanto menor melhor.
- Dado: Porcentagem de erros
- Descrição: Informa porcentagem de erro no sistema durante os testes.
- Limite recomendado: Quanto menor melhor.
- Dado: Vazão
- Descrição: Informa a quantidade de dados transferidos.