Mudanças entre as edições de "Almoxarifado 1.1.0.0"

De MSTECH wiki
Ir para: navegação, pesquisa
(Verificação de Desempenho)
(Resultado dos testes)
 
(6 revisões intermediárias pelo mesmo usuário não estão sendo mostradas)
Linha 13: Linha 13:
 
Para a realização dos testes foram encontradas dificuldades com o core utilizado pelo sistema, uma vez que o mesmo possui bugs na personalização de usuários.  
 
Para a realização dos testes foram encontradas dificuldades com o core utilizado pelo sistema, uma vez que o mesmo possui bugs na personalização de usuários.  
  
Para os testes foram utilizados:
+
O teste foi executado em várias etapas sendo que em cada uma era acrescentado mais 100 usuários simultâneos. Os teste foram executados por 30 minutos. Para os testes foram utilizados:
 
* 1 Servidor de bando de dados;
 
* 1 Servidor de bando de dados;
 
* 2 Servidores web;
 
* 2 Servidores web;
Linha 25: Linha 25:
  
 
Foi possível observar os pontos listados abaixo durante a execução dos teste:
 
Foi possível observar os pontos listados abaixo durante a execução dos teste:
1) A grande ocorrência de falhas de conexão, principalmente no servidor web01.  
+
*1) A grande ocorrência de falhas de conexão, principalmente no servidor web01.  
2) A fila de disco ficou acima do recomendado em um momento no bando de dados, ao qual chegou ao valor de 4,06 ao tem 1400 usuários simultâneos.
+
*2) A fila de disco ficou acima do recomendado em um momento no bando de dados, ao qual chegou ao valor de 4,06 ao ter 1400 usuários simultâneos.
3) Grande quantidade de request bloqueados no banco de dados.
+
*3) Grande quantidade de request bloqueados no banco de dados.
  
 
No bando de dados SQL o contador Buffer chache hit radio ficou dentro dos padrões, entre 99 - 100%. O Laze write/sec ficou zerado.
 
No bando de dados SQL o contador Buffer chache hit radio ficou dentro dos padrões, entre 99 - 100%. O Laze write/sec ficou zerado.
 
  
 
=== Cenários de uso ===
 
=== Cenários de uso ===
Linha 314: Linha 313:
 
|-
 
|-
 
|}
 
|}
 +
 +
=== TOP 10 queries mais lentas ===
 +
 +
* Item 1
 +
<syntaxhighlight lang="sql" line="1" >
 +
SELECT
 +
gm.gm_id,
 +
gm.gm_descricao,
 +
sgm.sgm_id,
 +
sgm.sgm_descricao,
 +
mat.mat_id,
 +
mat.mat_descricao,
 +
mat.um_id,
 +
um.um_sigla
 +
 +
FROM dbo.UnidadeAlmoxarifado ual WITH (NOLOCK)
 +
INNER JOIN UnidadeAlmoxarifadoGrupo uag WITH(NOLOCK)
 +
ON uag.uad_id = ual.uad_id
 +
INNER JOIN dbo.GrupoMaterial gm WITH (NOLOCK)
 +
ON uag.gm_id = gm.gm_id
 +
INNER JOIN dbo.SubGrupoMaterial sgm WITH (NOLOCK)
 +
ON uag.sgm_id = sgm.sgm_id
 +
INNER JOIN dbo.Material mat WITH (NOLOCK)
 +
ON uag.gm_id = mat.gm_id AND
 +
  uag.sgm_id = mat.sgm_id
 +
INNER JOIN dbo.UnidadeMedida um WITH (NOLOCK)
 +
ON mat.um_id = um.um_id
 +
 +
WHERE (@gm_id IS NULL OR uag.gm_id = @gm_id)
 +
  AND (@sgm_id IS NULL OR uag.sgm_id = @sgm_id)
 +
  AND (@mat_descricao IS NULL OR mat.mat_descricao LIKE '%' + @mat_descricao + '%')
 +
  AND (ual.ual_situacao <> 3)
 +
  AND (uag.uag_situcao <> 3)
 +
  AND (gm.gm_situacao <> 3)
 +
  AND (sgm.sgm_situacao <> 3)
 +
  AND (mat.mat_situacao = 1)
 +
 +
GROUP BY gm.gm_id,
 +
gm.gm_descricao,
 +
sgm.sgm_id,
 +
sgm.sgm_descricao,
 +
mat.mat_id,
 +
mat.mat_descricao,
 +
mat.um_id,
 +
um.um_sigla
 +
</syntaxhighlight>
 +
 +
* Item 2
 +
<syntaxhighlight lang="sql" line="1" >
 +
SELECT DISTINCT
 +
  gm.gm_id,
 +
  gm.gm_descricao,
 +
  gm.gm_situacao,
 +
  gm.gm_dataCriacao,
 +
  gm.gm_dataAlteracao
 +
     
 +
FROM dbo.GrupoMaterial gm WITH (NOLOCK)
 +
INNER JOIN dbo.SubGrupoMaterial sgm WITH (NOLOCK)
 +
ON gm.gm_id = sgm.gm_id
 +
INNER JOIN dbo.UnidadeAlmoxarifadoGrupo uag WITH(NOLOCK)
 +
ON uag.gm_id = gm.gm_id
 +
AND uag.sgm_id = sgm.sgm_id
 +
INNER JOIN dbo.Material mat WITH(NOLOCK)
 +
ON gm.gm_id = mat.gm_id
 +
AND sgm.sgm_id = mat.sgm_id
 +
 +
WHERE gm.gm_situacao = 1
 +
AND sgm.sgm_situacao = 1
 +
AND uag.uag_situcao = 1
 +
AND (@uad_id IS NULL OR uag.uad_id = @uad_id)
 +
 +
GROUP BY gm.gm_descricao, gm.gm_id, gm.gm_situacao, gm.gm_dataCriacao, gm.gm_dataAlteracao
 +
 +
ORDER BY gm.gm_descricao
 +
</syntaxhighlight>
 +
 +
* Item 3
 +
<syntaxhighlight lang="sql" line="1" >
 +
SELECT TOP 1
 +
  mat.mat_id,        -- Código do material
 +
  mat.mat_descricao, -- Descrição do material
 +
  mat.mat_situacao,  -- Situação do material (1: Ativo; 2: Bloqueado; 3: Excluído)
 +
  mat.gm_id,        -- Código do grupo do material
 +
  mat.sgm_id        -- Código do subgrupo do material
 +
 
 +
 +
FROM dbo.Material mat WITH (NOLOCK)
 +
 +
WHERE mat.mat_situacao <> 3 -- Todos os materiais que NÃO foram excluídos
 +
  AND (mat.mat_descricao = @mat_descricao)
 +
</syntaxhighlight>
 +
 +
* Item 4
 +
<syntaxhighlight lang="sql" line="1" >
 +
SELECT
 +
  stc.stc_id
 +
  ,stc.for_idPreferencia
 +
  ,stc.uad_idSolicitante
 +
  ,UA.uad_nome AS uad_nomeSolcitante
 +
  ,stc.uad_idDestino
 +
  ,stc.stc_status
 +
  ,stc.stc_situacao
 +
  ,stc.stc_dataCriacao
 +
  ,stc.stc_dataConclusao
 +
  ,stc.stc_dataAlteracao
 +
 +
FROM dbo.SolicitacaoCompra stc WITH(NOLOCK)
 +
INNER JOIN Synonym_SYS_UnidadeAdministrativa UA WITH(NOLOCK)
 +
ON stc.uad_idSolicitante = UA.uad_id
 +
 +
WHERE (@uad_id IS NULL OR stc.uad_idSolicitante = @uad_id)
 +
  AND (@Status IS NULL OR stc.stc_status = @Status)
 +
  AND (@DTInicio IS NULL OR CAST(stc.stc_dataCriacao AS DATE) >= @DTInicio)
 +
  AND (@DTFim IS NULL OR CAST(stc.stc_dataCriacao AS DATE) <= @DTFim)
 +
 
 +
ORDER BY stc.stc_dataCriacao DESC
 +
</syntaxhighlight>
 +
 +
* Item 5
 +
<syntaxhighlight lang="sql" line="1" >
 +
SELECT
 +
rqm.rqm_id
 +
,rqm.uad_idSolicitante
 +
,rqm.uad_idDestino
 +
,UA.uad_nome AS uad_nomeSolicitante
 +
,rqm.rqm_status
 +
,rqm.rqm_situacao
 +
,rqm.rqm_dataCriacao
 +
,rqm.rqm_dataConclusao
 +
,rqm.rqm_dataAlteracao
 +
 +
FROM RequisicaoMaterial rqm WITH(NOLOCK)
 +
 +
-- Departamento para o qual a requisição foi realizada
 +
INNER JOIN Synonym_SYS_UnidadeAdministrativa UA WITH(NOLOCK)
 +
ON rqm.uad_idSolicitante = UA.uad_id
 +
--INNER JOIN Synonym_SYS_TipoUnidadeAdministrativa TUA WITH(NOLOCK)
 +
-- ON rqm.tua_id = TUA.tua_id
 +
 +
WHERE (@uad_id IS NULL OR rqm.uad_idSolicitante = @uad_id)
 +
  AND (@Status IS NULL OR rqm.rqm_status = @Status)
 +
  AND (@DTInicio IS NULL OR CAST(rqm.rqm_dataCriacao AS DATE) >= @DTInicio)
 +
  AND (@DTFim IS NULL OR CAST(rqm.rqm_dataCriacao AS DATE) <= @DTFim)
 +
 
 +
ORDER BY rqm.rqm_dataCriacao
 +
</syntaxhighlight>
 +
 +
* Item 6
 +
<syntaxhighlight lang="sql" line="1" >
 +
INSERT INTO
 +
MovimentacaoEstoque
 +
(
 +
mve_id
 +
, mve_ano
 +
, usu_id
 +
, tme_id
 +
, tme_movimento
 +
, uad_id_origem
 +
, uad_id_destino
 +
, mve_justificativa
 +
, mve_situacao
 +
, mve_dataCriacao
 +
, mve_dataAlteracao
 +
 +
)
 +
VALUES
 +
(
 +
@mve_id
 +
, @mve_ano
 +
, @usu_id
 +
, @tme_id
 +
, @tme_movimento
 +
, @uad_id_origem
 +
, @uad_id_destino
 +
, @mve_justificativa
 +
, @mve_situacao
 +
, @mve_dataCriacao
 +
, @mve_dataAlteracao
 +
 +
)
 +
</syntaxhighlight>
 +
 +
* Item 7
 +
<syntaxhighlight lang="sql" line="1" >
 +
INSERT INTO
 +
ReceberMaterialItem
 +
(
 +
rbm_id
 +
,rbm_ano
 +
,mat_id
 +
,mat_descricao
 +
,cfop_id
 +
,rbi_quantidadeRecebida
 +
,rbi_valorICMS
 +
,rbi_valorIPI
 +
,rbi_situacao
 +
,rbi_dataCriacao
 +
,rbi_dataAlteracao
 +
,um_id_conversao
 +
,rbi_valorUnitario
 +
,rbi_valorTotal
 +
,rbi_quantidadeTotal
 +
,um_sigla
 +
 +
 +
)
 +
VALUES
 +
(
 +
@rbm_id
 +
, @rbm_ano
 +
, @mat_id
 +
, @mat_descricao
 +
, @cfop_id
 +
, @rbi_quantidadeRecebida
 +
, @rbi_valorICMS
 +
, @rbi_valorIPI
 +
, @rbi_situacao
 +
, @rbi_dataCriacao
 +
, @rbi_dataAlteracao
 +
, @um_id_conversao
 +
, @rbi_valorUnitario
 +
, @rbi_valorTotal
 +
, @rbi_quantidadeTotal
 +
, @um_sigla
 +
 +
 +
)
 +
</syntaxhighlight>
 +
 +
* Item 8
 +
<syntaxhighlight lang="sql" line="1" >
 +
INSERT INTO
 +
DocumentoFiscalEntrada
 +
(
 +
dfe_id
 +
, dfe_ano
 +
, dfe_numero
 +
, dfe_serie
 +
, dfe_dataEmissao
 +
, dfe_baseCalculoICMS
 +
, dfe_valorICMS
 +
, dfe_baseCalculoICMSSubst
 +
, dfe_valorICMSSubst
 +
, dfe_valorTotalProdutos
 +
, dfe_valorFrete
 +
, dfe_valorSeguro
 +
, dfe_valorOutras
 +
, dfe_valorIPI
 +
, dfe_valorNota
 +
, dfe_desconto
 +
, dfe_situacao
 +
, dfe_dataCriacao
 +
, dfe_dataAlteracao
 +
 +
)
 +
VALUES
 +
(
 +
@dfe_id
 +
, @dfe_ano
 +
, @dfe_numero
 +
, @dfe_serie
 +
, @dfe_dataEmissao
 +
, @dfe_baseCalculoICMS
 +
, @dfe_valorICMS
 +
, @dfe_baseCalculoICMSSubst
 +
, @dfe_valorICMSSubst
 +
, @dfe_valorTotalProdutos
 +
, @dfe_valorFrete
 +
, @dfe_valorSeguro
 +
, @dfe_valorOutras
 +
, @dfe_valorIPI
 +
, @dfe_valorNota
 +
, @dfe_desconto
 +
, @dfe_situacao
 +
, @dfe_dataCriacao
 +
, @dfe_dataAlteracao
 +
 +
)
 +
</syntaxhighlight>
 +
 +
* Item 9
 +
<syntaxhighlight lang="sql" line="1" >
 +
INSERT INTO
 +
MovimentacaoEstoque
 +
(
 +
mve_id
 +
, mve_ano
 +
, usu_id
 +
, tme_id
 +
, tme_movimento
 +
, uad_id_origem
 +
, uad_id_destino
 +
, mve_justificativa
 +
, mve_situacao
 +
, mve_dataCriacao
 +
, mve_dataAlteracao
 +
 +
)
 +
VALUES
 +
(
 +
@mve_id
 +
, @mve_ano
 +
, @usu_id
 +
, @tme_id
 +
, @tme_movimento
 +
, @uad_id_origem
 +
, @uad_id_destino
 +
, @mve_justificativa
 +
, @mve_situacao
 +
, @mve_dataCriacao
 +
, @mve_dataAlteracao
 +
 +
)
 +
</syntaxhighlight>
 +
 +
* Item 10
 +
<syntaxhighlight lang="sql" line="1" >
 +
SELECT
 +
UA.uad_id,
 +
UA.uad_nome
 +
FROM
 +
Synonym_SYS_UnidadeAdministrativa AS UA WITH(NOLOCK)
 +
INNER JOIN Synonym_SYS_Entidade AS ENT WITH(NOLOCK)
 +
ON ENT.ent_id = UA.ent_id
 +
INNER JOIN Synonym_SYS_TipoUnidadeAdministrativa AS TUA WITH(NOLOCK)
 +
ON UA.tua_id = TUA.tua_id
 +
INNER JOIN dbo.UnidadeAlmoxarifado AS UAL WITH(NOLOCK)
 +
ON UAL.uad_id = UA.uad_id
 +
WHERE
 +
UA.uad_situacao = 1
 +
AND ENT.ent_situacao = 1
 +
AND TUA.tua_situacao = 1
 +
AND @ent_id = ENT.ent_id
 +
AND @tua_id = UA.tua_id
 +
AND (@uad_id IS NULL OR @uad_id = UA.uad_id)
 +
AND UAL.ual_situacao = 1
 +
 +
GROUP BY
 +
UA.uad_id,
 +
UA.uad_nome
 +
 +
ORDER BY UA.uad_nome
 +
</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: Aplicação está dentro do recomendado.
+
: Análise: O processor fica grande parte do tempo ocioso.
  
 
:::::: [[Arquivo:2016-08-10 Amoxarifado TempoOcioso.png]]
 
:::::: [[Arquivo:2016-08-10 Amoxarifado TempoOcioso.png]]
Linha 397: Linha 741:
 
: Limite recomendado: Quanto menor melhor.
 
: Limite recomendado: Quanto menor melhor.
  
:::::: [[Arquivo:2016-08-10 Almoxarifado ExpectativaVidaPagina.png]
+
:::::: [[Arquivo:2016-08-10 Almoxarifado ExpectativaVidaPagina.png]]
  
 
: Contador: Número de deadlocks por segundo.
 
: Contador: Número de deadlocks por segundo.
Linha 403: Linha 747:
 
: Limite recomendado: Quanto menor melhor.
 
: Limite recomendado: Quanto menor melhor.
  
:::::: [[Arquivo:2016-08-10 Almoxarifado DeadlockSegundo.png]
+
:::::: [[Arquivo:2016-08-10 Almoxarifado DeadlockSegundo.png]]
  
 
: Contador: Request bloqueados.
 
: Contador: Request bloqueados.
Linha 409: Linha 753:
 
: Limite recomendado: Quanto menor melhor.
 
: Limite recomendado: Quanto menor melhor.
  
:::::: [[Arquivo:2016-08-10 Almoxarifado RequestsBloqueados.png]
+
:::::: [[Arquivo:2016-08-10 Almoxarifado RequestsBloqueados.png]]

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

Sistemas Verificados

  • Biblioteca, versão 1.45.0.0

Verificação de Segurança

Em verificação.


Verificação de Desempenho

Observação do teste

Para a realização dos testes foram encontradas dificuldades com o core utilizado pelo sistema, uma vez que o mesmo possui bugs na personalização de usuários.

O teste foi executado em várias etapas sendo que em cada uma era acrescentado mais 100 usuários simultâneos. Os teste foram executados por 30 minutos. Para os testes foram utilizados:

  • 1 Servidor de bando de dados;
  • 2 Servidores web;
  • 4 Test agent;

Análise do teste

A aplicação não utiliza muito processamento, estando o disco na maior parte do tempo ocioso. Referente ao processador foi observada 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.

Em contrapartida o sistema utiliza uma grande quantidade de memória, tanto física quanto virtual. A principal utilização de memória é realizada pelos servidores web, tendo o servidor de bando de dados a menor utilização de memória.

Foi possível observar os pontos listados abaixo durante a execução dos teste:

  • 1) A grande ocorrência de falhas de conexão, principalmente no servidor web01.
  • 2) A fila de disco ficou acima do recomendado em um momento no bando de dados, ao qual chegou ao valor de 4,06 ao ter 1400 usuários simultâneos.
  • 3) Grande quantidade de request bloqueados no banco de dados.

No bando de dados SQL o contador Buffer chache hit radio ficou dentro dos padrões, entre 99 - 100%. O Laze write/sec ficou zerado.

Cenários de uso

Cenário de uso #1 - Login
Ação realizada Think Time (segundos)
1 - Acessar tela de login 3
1 - Realizar login 7
1 - Selecionar sistema Transporte Escolar 5


Cenário de uso #2 - Cadastro de material
Ação realizada Think Time (segundos)
2 - Acessar tela de consulta de material 5
2 - Clicar em "Incluir material" 4
2 - Preencher campo "Grupo" 14
2 - Salvar cadastro de material 10
2 - Logout 5


Cenário de uso #3 - Recebimento de material
Ação realizada Think Time (segundos)
3 - Acessar tela de consulta de recebimento de materiais 5
3 - Clicar em "Incluir recebimento de materiais" 4
3 - Preencher campo "Unidade de almoxarifado" 4
3 - Abrir calendário 3
3 - Preencher campo "Fornecedor" 8
3 - Clicar em "Adicionar material" 3
3 - Preencher campo "Grupo de material" 4
3 - Pesquisar material 6
3 - Selecionar material 9
3 - Salvar cadastro e gerar exemplar 7
3 - Clicar em "Adicionar" 4
3 - Preencher campo "CFOP" 5
3 - Preencher campo "Unidade de conversão" 5
3 - Preencher campo "Quantidade recebida" 4
3 - Preencher campo "Valor unitário" 4
3 - Salvar cadastro 18
3 - Logout 5


Cenário de uso #4 - Movimentação de entrada
Ação realizada Think Time (segundos)
4 - Acessar tela de consulta de movimentações de entrada 5
4 - Clicar em "Incluir movimentação" 4
4 - Preencher campo "Unidade de almoxarifado de destino" 4
4 - Clicar em "Adicionar material" 4
4 - Preencher campo "Grupo de material" 4
4 - Pesquisar material 6
4 - Selecionar material 9
4 - Clicar em "Adicionar" 4
4 - Preencher campo "Unidade de medida de conversão" 5
4 - Preencher campo "Quantidade" 4
4 - Salvar movimentação de entrada 18
4 - Logout 5


Cenário de uso #5 - Movimentação de saída
Ação realizada Think Time (segundos)
5 - Acessar tela de movimentação de saída 5
5 - Clicar em "Unidade de almoxarifado de origem" 4
5 - Clicar em "Adicionar material" 4
5 - Preencher campo "Grupo de material" 5
5 - Pesquisar material 6
5 - Selecionar material 9
5 - Clicar em "Adicionar" 4
5 - Preencher campo "Unidade de medida de conversão" 5
5 - Preencher campo "Quantidade" 4
5 - Salvar cadastro 15
5 - Logout 5


Cenário de uso #6 - Solicitação de compra
Ação realizada Think Time (segundos)
6 - Acessar tela de solicitação de compra 5
6 - Clicar em "Incluir solicitação de compra" 4
6 - Preencher campo "Unidade de almoxarifado solicitante" 4
6 - Clicar em "Adicionar material" 4
6 - Preencher campo "Grupo de material" 4
6 - Pesquisar material 6
6 - Selecionar um material 9
6 - Clicar em "Adicionar" 4
6 - Salvar solicitação de compra 10
6 - Logout 5


Cenário de uso #7 - Cotação para compra
Ação realizada Think Time (segundos)
7 - Acessar tela de solicitação de compra 5
7 - Pesquisar solicitação de compra 5
7 - Clicar no ícone de cotação 4
7 - Clicar no ícone de pesquisa de fornecedor 4
7 - Pesquisar fornecedor 6
7 - Selecionar fornecedor 9
7 - Adicionar fornecedor 4
7 - Marcar fornecedor 4
7 - Clicar em "Finalizar" 8
7 - Logout 5


Cenário de uso #8 - Requisição de material
Ação realizada Think Time (segundos)
8 - Acessar tela de requisição de material 5
8 - Clicar em "Incluir requisição de material" 4
8 - Preencher campo "Unidade de almoxarifado solicitante" 4
8 - Clicar em "Adicionar material" 4
8 - Preencher campo "Grupo de material" 4
8 - Pesquisar material 6
8 - Selecionar material 9
8 - Clicar em "Adicionar" 4
8 - Preencher campo "Unidade de medidade de conversão" 4
8 - Preencher campo "Quantidade" 4
8 - Salvar requisição de material 10
8 - Logout 5


Cenário de uso #9 - Movimentação de transferência
Ação realizada Think Time (segundos)
9 - Acessar tela de movimentação de transferência 5
9 - Clicar em "Incluir movimentação" 4
9 - Preencher campo "Unidade de almoxarifado solicitante" 4
9 - Clicar em "Adicionar material" 4
9 - Preencher campo "Grupo de material" 4
9 - Pesquisar material 6
9 - Selecionar material 9
9 - Clicar em "Adicionar" 4
9 - Preencher campo "Unidade de medidade de conversão" 4
9 - Preencher campo "Quantidade" 4
9 - Salvar requisição de material 10
9 - Logout 5


Cenário de uso #10 - Atender requisições
Ação realizada Think Time (segundos)
10 - Acessar tela de atendimento de requesição 5
10 - Pesquisar requisição 6
10 - Selecionar requisição *
10 - Clicar em "Atendimento e requisição" 4
10 - Clicar em "Validar e reservar" 4
9 - Logout 5

TOP 10 queries mais lentas

  • Item 1
 1 SELECT 
 2 		gm.gm_id,
 3 		gm.gm_descricao,
 4 		sgm.sgm_id,
 5 		sgm.sgm_descricao,
 6 		mat.mat_id,
 7 		mat.mat_descricao,
 8 		mat.um_id,
 9 		um.um_sigla
10 
11 	FROM dbo.UnidadeAlmoxarifado ual WITH (NOLOCK)
12 			INNER JOIN UnidadeAlmoxarifadoGrupo uag WITH(NOLOCK) 
13 				ON uag.uad_id = ual.uad_id
14 			INNER JOIN dbo.GrupoMaterial gm WITH (NOLOCK)
15 				ON uag.gm_id = gm.gm_id
16 			INNER JOIN dbo.SubGrupoMaterial sgm WITH (NOLOCK)
17 				ON uag.sgm_id = sgm.sgm_id
18 			INNER JOIN dbo.Material mat WITH (NOLOCK)
19 				ON uag.gm_id = mat.gm_id AND
20 				   uag.sgm_id = mat.sgm_id
21 			INNER JOIN dbo.UnidadeMedida um WITH (NOLOCK)
22 				ON mat.um_id = um.um_id
23 	
24 	WHERE (@gm_id IS NULL OR uag.gm_id = @gm_id)
25 	  AND (@sgm_id IS NULL OR uag.sgm_id = @sgm_id)
26 	  AND (@mat_descricao IS NULL OR mat.mat_descricao LIKE '%' + @mat_descricao + '%')
27 	  AND (ual.ual_situacao <> 3)
28 	  AND (uag.uag_situcao <> 3)
29 	  AND (gm.gm_situacao <> 3)
30 	  AND (sgm.sgm_situacao <> 3)
31 	  AND (mat.mat_situacao = 1)
32 	
33 	GROUP BY gm.gm_id,
34 			 gm.gm_descricao,
35 			 sgm.sgm_id,
36 			 sgm.sgm_descricao,
37 			 mat.mat_id,
38 			 mat.mat_descricao,
39 			 mat.um_id,
40 			 um.um_sigla
  • Item 2
 1 SELECT DISTINCT
 2 	   gm.gm_id,
 3 	   gm.gm_descricao,
 4 	   gm.gm_situacao,
 5 	   gm.gm_dataCriacao,
 6 	   gm.gm_dataAlteracao 
 7 	       
 8 		FROM dbo.GrupoMaterial gm WITH (NOLOCK)
 9 			INNER JOIN dbo.SubGrupoMaterial sgm WITH (NOLOCK)
10 				ON gm.gm_id = sgm.gm_id
11 			INNER JOIN dbo.UnidadeAlmoxarifadoGrupo uag WITH(NOLOCK)
12 				ON uag.gm_id = gm.gm_id
13 				AND uag.sgm_id = sgm.sgm_id
14 			INNER JOIN dbo.Material mat WITH(NOLOCK)
15 				ON gm.gm_id = mat.gm_id
16 				AND sgm.sgm_id = mat.sgm_id
17 	
18 		WHERE gm.gm_situacao = 1
19 		 AND sgm.sgm_situacao = 1
20 		 AND uag.uag_situcao = 1
21 		 AND (@uad_id IS NULL OR uag.uad_id = @uad_id)
22 		
23 		GROUP BY gm.gm_descricao, gm.gm_id, gm.gm_situacao, gm.gm_dataCriacao, gm.gm_dataAlteracao 
24 		
25 		ORDER BY gm.gm_descricao
  • Item 3
 1 SELECT TOP 1
 2 		   mat.mat_id,        -- Código do material
 3 		   mat.mat_descricao, -- Descrição do material
 4 		   mat.mat_situacao,  -- Situação do material (1: Ativo; 2: Bloqueado; 3: Excluído)
 5 		   mat.gm_id,         -- Código do grupo do material
 6 		   mat.sgm_id         -- Código do subgrupo do material
 7 		   
 8 	
 9 		FROM dbo.Material mat WITH (NOLOCK)
10 		
11 		WHERE mat.mat_situacao <> 3 -- Todos os materiais que NÃO foram excluídos
12 		  AND (mat.mat_descricao = @mat_descricao)
  • Item 4
 1 SELECT 
 2 		  stc.stc_id
 3 		  ,stc.for_idPreferencia
 4 		  ,stc.uad_idSolicitante
 5 		  ,UA.uad_nome AS uad_nomeSolcitante
 6 		  ,stc.uad_idDestino
 7 		  ,stc.stc_status
 8 		  ,stc.stc_situacao
 9 		  ,stc.stc_dataCriacao
10 		  ,stc.stc_dataConclusao
11 		  ,stc.stc_dataAlteracao
12 
13 		FROM dbo.SolicitacaoCompra stc WITH(NOLOCK)
14 		INNER JOIN Synonym_SYS_UnidadeAdministrativa UA WITH(NOLOCK)
15 			ON stc.uad_idSolicitante = UA.uad_id
16 		
17 	WHERE (@uad_id IS NULL OR stc.uad_idSolicitante = @uad_id)
18 	  AND (@Status IS NULL OR stc.stc_status = @Status)
19 	  AND (@DTInicio IS NULL OR CAST(stc.stc_dataCriacao AS DATE) >= @DTInicio) 
20 	  AND (@DTFim IS NULL OR CAST(stc.stc_dataCriacao AS DATE) <= @DTFim)
21 	  
22 	ORDER BY stc.stc_dataCriacao DESC
  • Item 5
 1 SELECT 
 2 		rqm.rqm_id
 3 		,rqm.uad_idSolicitante
 4 		,rqm.uad_idDestino
 5 		,UA.uad_nome AS uad_nomeSolicitante
 6 		,rqm.rqm_status
 7 		,rqm.rqm_situacao
 8 		,rqm.rqm_dataCriacao
 9 		,rqm.rqm_dataConclusao
10 		,rqm.rqm_dataAlteracao
11 
12 		FROM RequisicaoMaterial rqm WITH(NOLOCK)
13 
14 			-- Departamento para o qual a requisição foi realizada
15 			INNER JOIN Synonym_SYS_UnidadeAdministrativa UA WITH(NOLOCK)
16 				ON rqm.uad_idSolicitante = UA.uad_id
17 			--INNER JOIN Synonym_SYS_TipoUnidadeAdministrativa TUA WITH(NOLOCK)
18 			--	ON rqm.tua_id = TUA.tua_id
19 		
20 	WHERE (@uad_id IS NULL OR rqm.uad_idSolicitante = @uad_id)
21 	  AND (@Status IS NULL OR rqm.rqm_status = @Status)
22 	  AND (@DTInicio IS NULL OR CAST(rqm.rqm_dataCriacao AS DATE) >= @DTInicio) 
23 	  AND (@DTFim IS NULL OR CAST(rqm.rqm_dataCriacao AS DATE) <= @DTFim)
24 	  
25 	ORDER BY rqm.rqm_dataCriacao
  • Item 6
 1 INSERT INTO 
 2 		MovimentacaoEstoque
 3 		( 
 4 			mve_id 
 5 			, mve_ano 
 6 			, usu_id 
 7 			, tme_id 
 8 			, tme_movimento 
 9 			, uad_id_origem 
10 			, uad_id_destino 
11 			, mve_justificativa 
12 			, mve_situacao 
13 			, mve_dataCriacao 
14 			, mve_dataAlteracao 
15  
16 		)
17 	VALUES
18 		( 
19 			@mve_id 
20 			, @mve_ano 
21 			, @usu_id 
22 			, @tme_id 
23 			, @tme_movimento 
24 			, @uad_id_origem 
25 			, @uad_id_destino 
26 			, @mve_justificativa 
27 			, @mve_situacao 
28 			, @mve_dataCriacao 
29 			, @mve_dataAlteracao 
30  
31 		)
  • Item 7
 1 INSERT INTO 
 2 		ReceberMaterialItem
 3 		( 
 4 		rbm_id
 5 		,rbm_ano
 6 		,mat_id
 7 		,mat_descricao
 8 		,cfop_id
 9 		,rbi_quantidadeRecebida
10 		,rbi_valorICMS
11 		,rbi_valorIPI
12 		,rbi_situacao
13 		,rbi_dataCriacao
14 		,rbi_dataAlteracao
15 		,um_id_conversao
16 		,rbi_valorUnitario
17 		,rbi_valorTotal
18 		,rbi_quantidadeTotal
19 		,um_sigla
20 
21  
22 		)
23 	VALUES
24 		( 
25 			@rbm_id 
26 			, @rbm_ano 
27 			, @mat_id 
28 			, @mat_descricao 
29 			, @cfop_id 
30 			, @rbi_quantidadeRecebida 
31 			, @rbi_valorICMS 
32 			, @rbi_valorIPI 
33 			, @rbi_situacao 
34 			, @rbi_dataCriacao 
35 			, @rbi_dataAlteracao
36 			, @um_id_conversao
37 			, @rbi_valorUnitario
38 			, @rbi_valorTotal
39 			, @rbi_quantidadeTotal 
40 			, @um_sigla
41 
42  
43 		)
  • Item 8
 1 INSERT INTO 
 2 		DocumentoFiscalEntrada
 3 		( 
 4 			dfe_id 
 5 			, dfe_ano 
 6 			, dfe_numero
 7 			, dfe_serie 
 8 			, dfe_dataEmissao 
 9 			, dfe_baseCalculoICMS 
10 			, dfe_valorICMS 
11 			, dfe_baseCalculoICMSSubst 
12 			, dfe_valorICMSSubst 
13 			, dfe_valorTotalProdutos 
14 			, dfe_valorFrete 
15 			, dfe_valorSeguro 
16 			, dfe_valorOutras 
17 			, dfe_valorIPI 
18 			, dfe_valorNota 
19 			, dfe_desconto
20 			, dfe_situacao 
21 			, dfe_dataCriacao 
22 			, dfe_dataAlteracao 
23 			 
24 		)
25 	VALUES
26 		( 
27 			@dfe_id 
28 			, @dfe_ano 
29 			, @dfe_numero 
30 			, @dfe_serie
31 			, @dfe_dataEmissao 
32 			, @dfe_baseCalculoICMS 
33 			, @dfe_valorICMS 
34 			, @dfe_baseCalculoICMSSubst 
35 			, @dfe_valorICMSSubst 
36 			, @dfe_valorTotalProdutos 
37 			, @dfe_valorFrete 
38 			, @dfe_valorSeguro 
39 			, @dfe_valorOutras 
40 			, @dfe_valorIPI 
41 			, @dfe_valorNota 
42 			, @dfe_desconto
43 			, @dfe_situacao 
44 			, @dfe_dataCriacao 
45 			, @dfe_dataAlteracao 
46 			
47 		)
  • Item 9
 1 INSERT INTO 
 2 		MovimentacaoEstoque
 3 		( 
 4 			mve_id 
 5 			, mve_ano 
 6 			, usu_id 
 7 			, tme_id 
 8 			, tme_movimento 
 9 			, uad_id_origem 
10 			, uad_id_destino 
11 			, mve_justificativa 
12 			, mve_situacao 
13 			, mve_dataCriacao 
14 			, mve_dataAlteracao 
15  
16 		)
17 	VALUES
18 		( 
19 			@mve_id 
20 			, @mve_ano 
21 			, @usu_id 
22 			, @tme_id 
23 			, @tme_movimento 
24 			, @uad_id_origem 
25 			, @uad_id_destino 
26 			, @mve_justificativa 
27 			, @mve_situacao 
28 			, @mve_dataCriacao 
29 			, @mve_dataAlteracao 
30  
31 		)
  • Item 10
 1 SELECT 
 2 			UA.uad_id,
 3 			UA.uad_nome
 4 		FROM 
 5 			Synonym_SYS_UnidadeAdministrativa AS UA WITH(NOLOCK)	
 6 		INNER JOIN Synonym_SYS_Entidade AS ENT WITH(NOLOCK)
 7 			ON ENT.ent_id = UA.ent_id			
 8 		INNER JOIN Synonym_SYS_TipoUnidadeAdministrativa AS TUA WITH(NOLOCK)
 9 			ON UA.tua_id = TUA.tua_id
10 		INNER JOIN dbo.UnidadeAlmoxarifado AS UAL WITH(NOLOCK)
11 			ON UAL.uad_id = UA.uad_id
12 		WHERE
13 			UA.uad_situacao = 1
14 			AND ENT.ent_situacao = 1
15 			AND TUA.tua_situacao = 1
16 			AND @ent_id = ENT.ent_id
17 			AND @tua_id = UA.tua_id
18 			AND (@uad_id IS NULL OR @uad_id = UA.uad_id)
19 			AND UAL.ual_situacao = 1
20 		
21 		GROUP BY
22 			UA.uad_id,
23 			UA.uad_nome
24 				
25 		ORDER BY UA.uad_nome


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 processor fica grande parte do tempo ocioso.
2016-08-10 Amoxarifado TempoOcioso.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: Aplicação está dentro do recomendado.
2016-08-10 Almoxarifado EspacoLivre.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: Aplicação está dentro do recomendado.
2016-08-10 Almoxarifado TempoTotalDoProcessador.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: Aplicação possui um número elevado.
2016-08-10 Almoxarifado MudancaContexto.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: A aplicação entra-se dentro do recomendado.
2016-08-10 Almoxarifado Paginas.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 aproxima-se bastante do recomendado.
2016-08-10 Almoxarifado MemoriaComprometida.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: Os servidores web aproximam-se bastante dos limites recomendados.
2016-08-10 Almoxarifao MemoriaDisponivel.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 bando de dados utiliza maior tráfego de rede.
2016-08-10 Almoxarifado InterfaceDeRedeTotal.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: Grande ocorrência de falhas, principalmente no servidor web.
2016-08-10 Almoxarifado ConexoesFalhas.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.
2016-08-10 Almoxarifado ExpectativaVidaPagina.png
Contador: Número de deadlocks por segundo.
Descrição: Informa a contagem de quantos deadlocks estão ocorrendo por segundo no sistema.
Limite recomendado: Quanto menor melhor.
2016-08-10 Almoxarifado DeadlockSegundo.png
Contador: Request bloqueados.
Descrição: Informa a quantidade de resquest bloqueados.
Limite recomendado: Quanto menor melhor.
2016-08-10 Almoxarifado RequestsBloqueados.png