{"id":6820,"date":"2018-01-20T19:56:26","date_gmt":"2018-01-20T21:56:26","guid":{"rendered":"http:\/\/gianfratti.com\/?p=6820"},"modified":"2018-01-20T20:14:31","modified_gmt":"2018-01-20T22:14:31","slug":"testes-de-software-medindo-o-desempenho-de-sua-aplicacao","status":"publish","type":"post","link":"https:\/\/gianfratti.com\/index.php\/testes-de-software-medindo-o-desempenho-de-sua-aplicacao\/","title":{"rendered":"Testes de Software\u2013Medindo o Desempenho de sua Aplica\u00e7\u00e3o"},"content":{"rendered":"<p><strong><u>Introdu\u00e7\u00e3o<\/u><\/strong><\/p>\n<p>Ol\u00e1 Pessoal, o objetivo desse post \u00e9 explicar passo a passo, inclusive entregar scripts prontos para voc\u00ea configurar, medir e interpretar os contadores de desempenho de um servidor ou computador, para que voc\u00ea consiga identificar os seguintes pontos:<\/p>\n<p>\u2013 Comportamento do sistema operacional quando sua aplica\u00e7\u00e3o est\u00e1 sendo executada;<\/p>\n<p>\u2013 Quais os requisitos ideais de hardware, software e configura\u00e7\u00e3o para que sua aplica\u00e7\u00e3o funcione corretamente;<\/p>\n<p>\u2013 Quando h\u00e1 lentid\u00e3o, se essa lentid\u00e3o est\u00e1 associada a um afunilamento de recursos e se esse afunilamento de recursos ocorre devido a pouco recurso, uso concorrente de outros aplicativos ou m\u00e1 gest\u00e3o de recursos de sua pr\u00f3pria aplica\u00e7\u00e3o.<\/p>\n<p>\u2013 Quando ocorre um mal funcionamento de sua aplica\u00e7\u00e3o ou servidor, identificar se algum dos recursos est\u00e3o sobrecarregados ocasionando esse mal funcionamento.<!--more--><\/p>\n<p><strong><u>Medindo o Desempenho de Forma Autom\u00e1tica<\/u><\/strong><\/p>\n<p>Atualmente contamos com ferramentas que automatizam o processo que explicarei abaixo. As ferramentas mais comuns s\u00e3o o <a href=\"https:\/\/technet.microsoft.com\/en-us\/library\/hh205987.aspx\" target=\"_blank\" rel=\"noopener\">System Center Operations Manager<\/a> da Microsoft que consiste em voc\u00ea possuir um Servidor com o SCOM e Banco de Dados e nos Servidores ou Computadores que voc\u00ea tiver sua aplica\u00e7\u00e3o, ter o agente do SCOM instalado. Depois, implantar no Servidor do SCOM os Templates necess\u00e1rios e ativar as medi\u00e7\u00f5es e coletar os dados. \u00c9 uma ferramenta extremamente poderosa e f\u00e1cil de utilizar. Indicada para empresas que possuem um Datacenter, CPD para gerir inclusive aplicativos de terceiros para avaliar seu comportamento. o SCOM consegue acompanhar medi\u00e7\u00f5es de <strong>Servi\u00e7os, Processos, Aplicativos Web (IIS e Apache) e Aplicativos JAVA<\/strong>.<\/p>\n<p>Outra ferramenta que \u00e9 uma evolu\u00e7\u00e3o do <a href=\"https:\/\/technet.microsoft.com\/en-us\/library\/hh205987.aspx\" target=\"_blank\" rel=\"noopener\">System Center<\/a> nesse sentido \u00e9 o Microsoft <a href=\"https:\/\/azure.microsoft.com\/en-us\/documentation\/articles\/app-insights-get-started\/\" target=\"_blank\" rel=\"noopener\">Visual Studio Application Insights<\/a>, que al\u00e9m de fazer as medi\u00e7\u00f5es que comentei acima usando o mesmo principio do agente, tamb\u00e9m monitora diretamente a aplica\u00e7\u00e3o mas, voltado \u00e0 falhas, exce\u00e7\u00f5es, uso de funcionalidades de sua aplica\u00e7\u00e3o pelo usu\u00e1rio, entre outros itens, sendo necess\u00e1rio instrumentar a aplica\u00e7\u00e3o via Visual Studio. Sua vantagem \u00e9 que ela monitora aplica\u00e7\u00f5es in-loco, no cliente, em celulares, etc. Sendo que os dados ficam hospedados no Visual Studio Online.<\/p>\n<p>Mas vale a pena ler esse artigo, pois antes de usar qualquer ferramenta, \u00e9 importante entender o que medir e como interpretar cada medi\u00e7\u00e3o, al\u00e9m de que muitas vezes voc\u00ea n\u00e3o ter\u00e1 tais ferramentas dispon\u00edveis para usar e as que indico nesse artigo s\u00e3o gratuitas e de f\u00e1cil gerenciamento.<\/p>\n<p><strong><u>Contadores Base <\/u><\/strong><\/p>\n<p><strong>\u2013 O que e quando medir. Entendendo os contadores<\/strong><\/p>\n<p>Em primeiro lugar esse post \u00e9 espec\u00edfico para ambientes Windows, que \u00e9 minha praia, mas existe muito material bom para outros sistemas operacionais como Linux, OSX, etc.<\/p>\n<p>H\u00e1 cinco \u00e1reas de recursos que podem causar afunilamentos e afetar o desempenho do servidor:<\/p>\n<p>Essas \u00e1reas s\u00e3o: <strong>Disco F\u00edsico, Mem\u00f3ria, Processo, CPU (processador) e Rede<\/strong>. Se qualquer um desses recursos for utilizado em excesso, o servidor ou o aplicativo poder\u00e1 ficar muito lento ou at\u00e9 falhar.<\/p>\n<p><span style=\"color: #ff0000;\"><strong>Muito importante:<\/strong><\/span> Antes de sairmos enlouquecidos medindo o desempenho do disco e j\u00e1 dizendo que tem problema, ou de qualquer outro recurso, primeiro temos que entender um pouco sobre esse recurso. Por exemplo:<\/p>\n<p>Atualmente um dos discos mais r\u00e1pidos dispon\u00edveis no mercado s\u00e3o os discos <a href=\"https:\/\/en.wikipedia.org\/wiki\/Solid-state_drive\" target=\"_blank\" rel=\"noopener\">SSD<\/a> com barramento direto na placa como o da foto abaixo: (Sim isso \u00e9 um disco)<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-6823\" src=\"http:\/\/gianfratti.com\/wp-content\/uploads\/2018\/01\/Teste_performance_02.png\" alt=\"\" width=\"1000\" height=\"724\" srcset=\"https:\/\/gianfratti.com\/wp-content\/uploads\/2018\/01\/Teste_performance_02.png 1000w, https:\/\/gianfratti.com\/wp-content\/uploads\/2018\/01\/Teste_performance_02-300x217.png 300w, https:\/\/gianfratti.com\/wp-content\/uploads\/2018\/01\/Teste_performance_02-768x556.png 768w\" sizes=\"auto, (max-width: 1000px) 100vw, 1000px\" \/><\/p>\n<p>Agora imagine que voc\u00ea coleta um dado e informa ao respons\u00e1vel pelo servidor que o problema \u00e9 afunilamento do disco, sendo que o servidor possui um disco desse? A probabilidade de sua an\u00e1lise estar incorreta \u00e9 de quase 100%. Realmente pode ocorrer um afunilamento, mas possivelmente um processo estar sendo executado de forma incorreta gerando esse afunilamento. E o pior, o administrador poder\u00e1 vir com uma pergunta que normalmente deixa qualquer desenvolvedor ou analista de cabelo em p\u00e9, \u2013 <strong>OK, temos um afunilamento, preciso que voc\u00ea me diga quantos IOPS sua aplica\u00e7\u00e3o precisa\u2026<\/strong> E a\u00ed meu amigo?<\/p>\n<p>Por isso o ideal \u00e9 termos o cuidado de analisarmos todos os contadores, fazer uma interpreta\u00e7\u00e3o e ai sim conversar com o time de TI para ver se h\u00e1 algum problema nos recursos.<\/p>\n<p><strong>\u2013 Regras B\u00e1sicas<\/strong><\/p>\n<p>\u00c9 muito importante saber sobre:<\/p>\n<p>* <strong>Desempenho m\u00e1ximo do hardware:<\/strong> Por exemplo, qual a taxa m\u00e1xima de transfer\u00eancia de um disco rigido ou de um RAID configurado. O ideal \u00e9 saber o modelo do hardware e consultar o manual do fabricante. Por exemplo, um aplicativo com o Microsoft SQL Server aceita no m\u00e1ximo uma leitura\/escrita de no m\u00e1ximo 10ms, se passar disso ocasiona afunilamento. O ideal nesse caso, quando o hardware n\u00e3o suporta \u00e9 ou trocar o mesmo por um de maior velocidade, ou montar volumes <a href=\"https:\/\/en.wikipedia.org\/wiki\/RAID\" target=\"_blank\" rel=\"noopener\">RAID<\/a> ou <a href=\"https:\/\/en.wikipedia.org\/wiki\/Non-RAID_drive_architectures\" target=\"_blank\" rel=\"noopener\">JBOD<\/a> para dar velocidade.<\/p>\n<p>* <strong>Quais os contadores mais usados para medir o desempenho do servidor:<\/strong> Os mais utilizados s\u00e3o o <strong>disco<\/strong>, <strong>mem\u00f3ria<\/strong>, <strong>processador<\/strong>, <strong>rede<\/strong> e o <strong>processo (aplicativo).<\/strong> Com esses contadores \u00e9 poss\u00edvel entender onde est\u00e1 o afunilamento.<\/p>\n<p>* <strong>Qual a associa\u00e7\u00e3o entre esses contadores:<\/strong> Por exemplo, se estou tendo um afunilamento de disco causado por pagina\u00e7\u00e3o do sistema operacional, significa que, a mem\u00f3ria RAM \u201cacabou\u201d e o sistema est\u00e1 precisando escrever em disco para compensar a falta de recurso. Se o processador est\u00e1 com picos de 80%, e o disco e mem\u00f3ria est\u00e3o com uso dentro de sua normalidade, pode significar que est\u00e1 na hora de rever o processador e quantidade de cores utilizados.<\/p>\n<p><strong>\u2013 Algumas dicas<\/strong><\/p>\n<p>O ideal \u00e9 medir esses contadores do servidor em si, pois com isso pode-se perceber nesses contadores que, algumas vezes seu processo (aplicativo) pode estar com problema de leitura e escrita em disco, mas observando o <strong>contador do disco percebe-se \u201cfolga\u201d, <\/strong>ou seja, o aplicativo pode estar tento dificuldades em manipular arquivos e n\u00e3o que o problema seja o disco em si.<\/p>\n<p>Seu aplicativo est\u00e1 usando todos os cores do processador corretamente, ou sua aplica\u00e7\u00e3o consegue balancear esse uso? Ou percebe-se que apenas um core dos 24 disponiveis no processador est\u00e1 sendo usado pelo seu aplicativo? Ou seu aplicativo ainda trabalha em modo 32 Bits?<\/p>\n<p><strong><u>Principais contadores<\/u><\/strong><\/p>\n<p>Para voc\u00ea ter uma medi\u00e7\u00e3o assertiva, o ideal \u00e9 medir o conjunto em geral do servidor ou computador que executa a aplica\u00e7\u00e3o e os contadores dos processos (os execut\u00e1veis de sua aplica\u00e7\u00e3o e os execut\u00e1veis adicionais como por exemplo o W3WP.EXE do Internet Information Services, quando sua aplica\u00e7\u00e3o \u00e9 Web).<\/p>\n<p><strong>\u2013 Contadores do Servidor\/Computador<\/strong><\/p>\n<p>Os contadores mais medidos e utilizados em um servidor s\u00e3o do Processador, Mem\u00f3ria, Disco e as vezes rede. Sendo que dentre desses contadores h\u00e1 subcontadores espec\u00edficos que voc\u00ea deve usar conforme sua necessidade.<\/p>\n<p>Veja nesse artigo os subcontadores dispon\u00edveis e qual sua utilidade.<\/p>\n<p><a title=\"https:\/\/technet.microsoft.com\/en-us\/magazine\/2008.08.pulse.aspx\" href=\"https:\/\/technet.microsoft.com\/en-us\/magazine\/2008.08.pulse.aspx\">https:\/\/technet.microsoft.com\/en-us\/magazine\/2008.08.pulse.aspx<\/a><\/p>\n<p><strong>\u2013 Contadores de seu Processo (Execut\u00e1vel de sua Aplica\u00e7\u00e3o)<\/strong><\/p>\n<p>Voc\u00ea dever\u00e1 medir individualmente os processos que constituem sua aplica\u00e7\u00e3o, sendo que desse processo, os contadores mais comuns s\u00e3o: <strong>Tempo de Processador<\/strong>, <strong>Handles ou Ponteiros<\/strong>, <strong>Mem\u00f3ria<\/strong>.<\/p>\n<p><strong>* Tempo de Processador:<\/strong> Mede a porcentagem do tempo decorrido gasto pelo processador na execu\u00e7\u00e3o de uma thread. Se a porcentagem for superior a 85%, o processador est\u00e1 sobrecarregado.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-6824\" src=\"http:\/\/gianfratti.com\/wp-content\/uploads\/2018\/01\/Teste_performance_03.jpg\" alt=\"\" width=\"300\" height=\"300\" \/><\/p>\n<p><strong>* Handles ou Ponteiros:<\/strong> Um objeto \u00e9 uma estrutura de dados que representa um recurso do sistema, como um arquivo , linha, ou imagem gr\u00e1fica. Um aplicativo n\u00e3o pode acessar diretamente objeto de dados ou o recurso do sistema que um objeto representa. Em vez disso, um aplicativo deve obter um identificador de objeto, que ele pode usar para examinar ou modificar o recurso do sistema . Cada identificador tem uma entrada em uma tabela mantido internamente. Essas entradas cont\u00eam os endere\u00e7os dos recursos e os meios para identificar o tipo de recurso.<\/p>\n<p>Ou seja, sua aplica\u00e7\u00e3o \u201cabre\u201d uma solicita\u00e7\u00e3o atrav\u00e9s de ponteiro (handle) ao sistema operacional para acessar um recurso, e depois de conclu\u00eddo, a mesma fecha. O que pode ocorrer \u00e9 a abertura de in\u00fameros ponteiros sem a finaliza\u00e7\u00e3o ap\u00f3s a consulta do recurso, gerando uma sobrecarga no sistema at\u00e9 a total indisponibilidade do mesmo.<\/p>\n<p>Veja o contador abaixo do Perfmon, comparando com o Task Manager.<\/p>\n<p><a href=\"https:\/\/qualidadeeti.files.wordpress.com\/2015\/11\/image1.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-6825\" src=\"http:\/\/gianfratti.com\/wp-content\/uploads\/2018\/01\/Teste_performance_04.png\" alt=\"\" width=\"1024\" height=\"458\" srcset=\"https:\/\/gianfratti.com\/wp-content\/uploads\/2018\/01\/Teste_performance_04.png 1024w, https:\/\/gianfratti.com\/wp-content\/uploads\/2018\/01\/Teste_performance_04-300x134.png 300w, https:\/\/gianfratti.com\/wp-content\/uploads\/2018\/01\/Teste_performance_04-768x344.png 768w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/a><\/p>\n<p><strong><span style=\"color: #ff0000;\">E qual o n\u00famero ideal de Handles?<\/span><\/strong> Depende da aplica\u00e7\u00e3o, mas um comportamento visivel de que h\u00e1 algo errado \u00e9 o acr\u00e9scimo di\u00e1rio desse n\u00famero, sempre mais aumentando que diminuindo, durante os dias. Mas em via de regra, <strong>qualquer processo que possuo mais de 10.000 identificadores abertos<\/strong>, possivelmente est\u00e1 mal projetado ou est\u00e1 ocorrendo um \u201cvazamento\u201d de identificadores e precisa ser avaliado pelo time de desenvolvimento.<\/p>\n<p>Veja esse artigo: <a href=\"http:\/\/blogs.technet.com\/b\/markrussinovich\/archive\/2009\/09\/29\/3283844.aspx\" target=\"_blank\" rel=\"noopener\">Pushing the Limits of Windows: Handles<\/a><\/p>\n<p><span style=\"font-family: Tahoma;\">Outra forma de identificar um poss\u00edvel vazamento de Handles \u00e9 usar o <a href=\"https:\/\/download.sysinternals.com\/files\/ProcessExplorer.zip\" target=\"_blank\" rel=\"noopener\">Process Explorer<\/a> da <strong>Microsoft<\/strong> e acompanhar a gest\u00e3o dos identificadores, caso voc\u00ea perceba atrav\u00e9s do gr\u00e1fico do Perfmon um aumento significativo de Handles. <\/span><\/p>\n<p><span style=\"font-family: Tahoma;\">No caso, habilitei a visualiza\u00e7\u00e3o do painel de Handles no Process Explorer e acompanhei o que um processo est\u00e1 usando, abrindo e fechando.<\/span><\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-6826\" src=\"http:\/\/gianfratti.com\/wp-content\/uploads\/2018\/01\/Teste_performance_05.png\" alt=\"\" width=\"930\" height=\"768\" srcset=\"https:\/\/gianfratti.com\/wp-content\/uploads\/2018\/01\/Teste_performance_05.png 930w, https:\/\/gianfratti.com\/wp-content\/uploads\/2018\/01\/Teste_performance_05-300x248.png 300w, https:\/\/gianfratti.com\/wp-content\/uploads\/2018\/01\/Teste_performance_05-768x634.png 768w\" sizes=\"auto, (max-width: 930px) 100vw, 930px\" \/><\/p>\n<p><span style=\"font-family: Tahoma;\"><strong>* Memory: <\/strong>Contador extremamente importante, pois tr\u00e1s para n\u00f3s informa\u00e7\u00f5es cruciais como o uso de mem\u00f3ria pelo processo. Podemos identificar se o consumo est\u00e1 de acordo ao esperado, se h\u00e1 falta de mem\u00f3ria ou algum vazamento por gerenciamento incorreto ou BUG.<\/span><\/p>\n<p><strong><span style=\"color: #ff0000;\">Mas o quanto que \u00e9 o suficiente que um processo pode usar? Quando sei que h\u00e1 vazamento de mem\u00f3ria ou memory leak? Quanto de mem\u00f3ria \u00e9 suficiente para o Servidor ou Computador?<\/span><\/strong><\/p>\n<p>Primeiro voc\u00ea precisa entender o quanto que um processo de sua aplica\u00e7\u00e3o aloca para executar determinada atividade. Por exemplo, para minha aplica\u00e7\u00e3o processar um lote de 10 documentos de forma satisfat\u00f3ria o Processo A utiliza 2048 K de mem\u00f3ria e o Processo B utiliza 1024 K. Depois de concluido o processamento, o processo libera a mem\u00f3ria ou mantem o minimo de uso.<\/p>\n<p>Nesse momento em que voc\u00ea mede a mem\u00f3ria, voc\u00ea poder\u00e1 avaliar os seguintes itens:<\/p>\n<p>\u2013 Depois que o processo concluiu o uso de mem\u00f3ria, ele libera a mem\u00f3ria, mant\u00e9m a mem\u00f3ria, ou aloca mais e mais mem\u00f3ria sem estar executando nenhum processamento?<\/p>\n<p>\u2013 Depois que ele processou o lote de 10 documentos, quando ele processa mais um lote, ele aumenta significamente o uso da mem\u00f3ria para o dobro? Ou seja, cada vez que ele processa um lote o processo duplica o uso de mem\u00f3ria?<\/p>\n<p>\u2013 A quantidade de mem\u00f3ria usada pelo meu processo, \u00e9 uma quantidade razo\u00e1vel onde ir\u00e1 funcionar em um ambiente padr\u00e3o com servidores de 08 GB com seus outros processos concorrentes? Ou para que minha aplica\u00e7\u00e3o funcione, terei que disponibilizar uma quantidade consider\u00e1vel de mem\u00f3ria para os meus processos, sendo aceit\u00e1vel isso para o mercado e cliente?<\/p>\n<p>No Task Manager ou Gerenciador de Tarefas a mem\u00f3ria f\u00edsica utilizada estar\u00e1 na coluna \u201cMemory (private) para seu processo espec\u00edfico. No Performance Monitor, o contadores ser\u00e1 Memory \u2013 Working Set.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-6827\" src=\"http:\/\/gianfratti.com\/wp-content\/uploads\/2018\/01\/Teste_performance_06.png\" alt=\"\" width=\"1024\" height=\"540\" srcset=\"https:\/\/gianfratti.com\/wp-content\/uploads\/2018\/01\/Teste_performance_06.png 1024w, https:\/\/gianfratti.com\/wp-content\/uploads\/2018\/01\/Teste_performance_06-300x158.png 300w, https:\/\/gianfratti.com\/wp-content\/uploads\/2018\/01\/Teste_performance_06-768x405.png 768w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/p>\n<p>Voc\u00ea tamb\u00e9m poder\u00e1 acompanhar se h\u00e1 mem\u00f3ria dispon\u00edvel no servidor, para identificar se voc\u00ea est\u00e1 com problemas de gerenciamento de mem\u00f3ria ou n\u00e3o pelo seu processo, pois a mem\u00f3ria disponivel medida \u00e9 realmente uma mem\u00f3ria livre pronta para ser usada por um processo.<\/p>\n<p><strong><span style=\"color: #ff0000;\">O sistema operacional Windows define mem\u00f3ria dispon\u00edvel como mem\u00f3ria f\u00edsica que n\u00e3o \u00e9 atribu\u00eddo a um processo, o kernel, ou drivers de dispositivos.<\/span><\/strong><\/p>\n<p>No Performance Monitor, o contador \u00e9 <strong>Memory \u2013 Avalilabe MBytes<\/strong>. Observe que ele informa que o Sistema Operacional possui aproximadamente 14 GB de mem\u00f3ria livre.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-6828\" src=\"http:\/\/gianfratti.com\/wp-content\/uploads\/2018\/01\/Teste_performance_07.png\" alt=\"\" width=\"1024\" height=\"370\" srcset=\"https:\/\/gianfratti.com\/wp-content\/uploads\/2018\/01\/Teste_performance_07.png 1024w, https:\/\/gianfratti.com\/wp-content\/uploads\/2018\/01\/Teste_performance_07-300x108.png 300w, https:\/\/gianfratti.com\/wp-content\/uploads\/2018\/01\/Teste_performance_07-768x278.png 768w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/p>\n<p>Esse contador \u00e9 extremamente importante, pois medindo ele mais o que \u00e9 usado pelo seu processo, voc\u00ea consegue identificar se h\u00e1 falta de mem\u00f3ria no servidor causando lentid\u00e3o em sua aplica\u00e7\u00e3o ou n\u00e3o.<\/p>\n<p><strong><span style=\"font-family: Tahoma;\">\u2013 Co<\/span><\/strong><strong><span style=\"font-family: Tahoma;\">ntadores dos Processos que Comportam sua Aplica\u00e7\u00e3o<\/span><\/strong><\/p>\n<p>Claro que sua aplica\u00e7\u00e3o utiliza diversos processos do sistema operacional, e seria complexo medir todos, como por exemplo o famoso <a href=\"http:\/\/windows.microsoft.com\/en-us\/windows\/what-is-svchost-exe#1TC=windows-7\" target=\"_blank\" rel=\"noopener\">SVCHOST<\/a> do Windows que \u00e9 praticamente seu CORE. Mas a\u00ed que conta a experi\u00eancia. Resumindo existem processos como:<\/p>\n<p><strong>SPOOLER.EXE:<\/strong> que trata de quest\u00f5es de impress\u00e3o<\/p>\n<p><strong>W3WP.EXE:<\/strong> que trata de aplicativos Web hospedados no Internet Information Services<\/p>\n<p>Desses processos voc\u00ea poder\u00e1 usar os contadores Handles (Quantidade de Ponteiros), Memory (Mem\u00f3ria F\u00edsica Utilizada) e Processor (Tempo de Processador)<\/p>\n<p><u><strong>Scripts e Templates Prontos<\/strong><\/u><\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-6829\" src=\"http:\/\/gianfratti.com\/wp-content\/uploads\/2018\/01\/Teste_performance_08.png\" alt=\"\" width=\"185\" height=\"139\" \/><\/p>\n<p>Para facilitar, deixo aqui os links para download de uma cole\u00e7\u00e3o de scripts Powershell e tamb\u00e9m de templates para serem usados conforme a necessidade.<\/p>\n<p><strong>\u2013 Usando o Template Coletor Servidor \u2013 Modelo A<\/strong><\/p>\n<p>Esse template funciona no Windows 2008, Windows 2012, Windows 7, Windows 8 e Windows 10. Ele possui os contadores de Servidor: Disco, Processador e Mem\u00f3ria e de Processo: Handles, Thread, Mem\u00f3ria, Disco.<\/p>\n<p><a href=\"https:\/\/gallery.technet.microsoft.com\/e-Template-para-uso-no-1218cac8\" target=\"_blank\" rel=\"noopener\">Fa\u00e7a o download aqui!<\/a><\/p>\n<p>ou clique diretamente no link: <a title=\"https:\/\/gallery.technet.microsoft.com\/e-Template-para-uso-no-1218cac8\" href=\"https:\/\/gallery.technet.microsoft.com\/e-Template-para-uso-no-1218cac8\">https:\/\/gallery.technet.microsoft.com\/e-Template-para-uso-no-1218cac8<\/a><\/p>\n<p>Abra o <strong>Performance Monitor \u2013 Data Collector Sets \u2013 New \u2013 Data Collector Set<\/strong><\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-6830\" src=\"http:\/\/gianfratti.com\/wp-content\/uploads\/2018\/01\/Teste_performance_09.png\" alt=\"\" width=\"517\" height=\"372\" srcset=\"https:\/\/gianfratti.com\/wp-content\/uploads\/2018\/01\/Teste_performance_09.png 517w, https:\/\/gianfratti.com\/wp-content\/uploads\/2018\/01\/Teste_performance_09-300x216.png 300w\" sizes=\"auto, (max-width: 517px) 100vw, 517px\" \/><\/p>\n<p>Digite o nome do seu Data Collector, em seguida selecione <strong>Create from a template.<\/strong><\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-6831\" src=\"http:\/\/gianfratti.com\/wp-content\/uploads\/2018\/01\/Teste_performance_10.png\" alt=\"\" width=\"535\" height=\"418\" srcset=\"https:\/\/gianfratti.com\/wp-content\/uploads\/2018\/01\/Teste_performance_10.png 535w, https:\/\/gianfratti.com\/wp-content\/uploads\/2018\/01\/Teste_performance_10-300x234.png 300w\" sizes=\"auto, (max-width: 535px) 100vw, 535px\" \/><\/p>\n<p>Escolha o template <strong>Coletor Servidor \u2013 Modelo A<\/strong><\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-6832\" src=\"http:\/\/gianfratti.com\/wp-content\/uploads\/2018\/01\/Teste_performance_11.png\" alt=\"\" width=\"891\" height=\"442\" srcset=\"https:\/\/gianfratti.com\/wp-content\/uploads\/2018\/01\/Teste_performance_11.png 891w, https:\/\/gianfratti.com\/wp-content\/uploads\/2018\/01\/Teste_performance_11-300x149.png 300w, https:\/\/gianfratti.com\/wp-content\/uploads\/2018\/01\/Teste_performance_11-768x381.png 768w\" sizes=\"auto, (max-width: 891px) 100vw, 891px\" \/><\/p>\n<p>Clique em Finish. Em seguida clique em Start.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-6833\" src=\"http:\/\/gianfratti.com\/wp-content\/uploads\/2018\/01\/Teste_performance_12.png\" alt=\"\" width=\"455\" height=\"213\" srcset=\"https:\/\/gianfratti.com\/wp-content\/uploads\/2018\/01\/Teste_performance_12.png 455w, https:\/\/gianfratti.com\/wp-content\/uploads\/2018\/01\/Teste_performance_12-300x140.png 300w\" sizes=\"auto, (max-width: 455px) 100vw, 455px\" \/><\/p>\n<p>Esse coletor ir\u00e1 funcionar at\u00e9 que se ocupe um espa\u00e7o de LOG de 600 MB ou se voc\u00ea parar ele antes. e seu diret\u00f3rio padr\u00e3o ser\u00e1 conforme o da imagem.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-6834\" src=\"http:\/\/gianfratti.com\/wp-content\/uploads\/2018\/01\/Teste_performance_13.png\" alt=\"\" width=\"745\" height=\"92\" srcset=\"https:\/\/gianfratti.com\/wp-content\/uploads\/2018\/01\/Teste_performance_13.png 745w, https:\/\/gianfratti.com\/wp-content\/uploads\/2018\/01\/Teste_performance_13-300x37.png 300w\" sizes=\"auto, (max-width: 745px) 100vw, 745px\" \/><\/p>\n<p>Voc\u00ea pode alterar as configura\u00e7\u00f5es do mesmo nas propriedades, como o diret\u00f3rio, condi\u00e7\u00f5es de parada, conta que ir\u00e1 executar o coletor (administrador, por exemplo).<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-6835\" src=\"http:\/\/gianfratti.com\/wp-content\/uploads\/2018\/01\/Teste_performance_14.png\" alt=\"\" width=\"408\" height=\"472\" srcset=\"https:\/\/gianfratti.com\/wp-content\/uploads\/2018\/01\/Teste_performance_14.png 408w, https:\/\/gianfratti.com\/wp-content\/uploads\/2018\/01\/Teste_performance_14-259x300.png 259w\" sizes=\"auto, (max-width: 408px) 100vw, 408px\" \/><\/p>\n<p>Para saber mais, acesse os links abaixo:<\/p>\n<p>\u2013 <a href=\"https:\/\/technet.microsoft.com\/en-us\/magazine\/2008.08.pulse.aspx\" target=\"_blank\" rel=\"noopener\">O que cada coletor faz<\/a><\/p>\n<p>\u2013 <a href=\"https:\/\/technet.microsoft.com\/en-us\/magazine\/ee872428.aspx\" target=\"_blank\" rel=\"noopener\">Como ativar via Powershell<\/a><\/p>\n<p>Importante: Lembre-se que al\u00e9m dos contadores do Servidor, voc\u00ea dever\u00e1 tamb\u00e9m ativar os contadores de processo. No pacote est\u00e1 dispon\u00edvel um Template para o Processo Calculadora do Windows com os principais contadores. Voc\u00ea dever\u00e1 apenas trocar pelo processo de sua aplica\u00e7\u00e3o.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-6836\" src=\"http:\/\/gianfratti.com\/wp-content\/uploads\/2018\/01\/Teste_performance_15.png\" alt=\"\" width=\"450\" height=\"473\" srcset=\"https:\/\/gianfratti.com\/wp-content\/uploads\/2018\/01\/Teste_performance_15.png 450w, https:\/\/gianfratti.com\/wp-content\/uploads\/2018\/01\/Teste_performance_15-285x300.png 285w\" sizes=\"auto, (max-width: 450px) 100vw, 450px\" \/><\/p>\n<p><strong>\u2013 Analisando os Contadores Coletados<\/strong><\/p>\n<p>Depois de feito a coleta dos dados do servidor e dos processos que comp\u00f5em sua aplica\u00e7\u00e3o, iremos agora interpretar os dados.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-6837\" src=\"http:\/\/gianfratti.com\/wp-content\/uploads\/2018\/01\/Teste_performance_16.jpg\" alt=\"\" width=\"640\" height=\"366\" srcset=\"https:\/\/gianfratti.com\/wp-content\/uploads\/2018\/01\/Teste_performance_16.jpg 640w, https:\/\/gianfratti.com\/wp-content\/uploads\/2018\/01\/Teste_performance_16-300x172.jpg 300w\" sizes=\"auto, (max-width: 640px) 100vw, 640px\" \/><\/p>\n<p>&nbsp;<\/p>\n<p>Possuimos ent\u00e3o os coletores abaixo:<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-6838\" src=\"http:\/\/gianfratti.com\/wp-content\/uploads\/2018\/01\/Teste_performance_17.png\" alt=\"\" width=\"562\" height=\"106\" srcset=\"https:\/\/gianfratti.com\/wp-content\/uploads\/2018\/01\/Teste_performance_17.png 562w, https:\/\/gianfratti.com\/wp-content\/uploads\/2018\/01\/Teste_performance_17-300x57.png 300w\" sizes=\"auto, (max-width: 562px) 100vw, 562px\" \/><\/p>\n<p>Iremos em <strong>Reports \u2013 Coletor Servidor<\/strong><\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-6839\" src=\"http:\/\/gianfratti.com\/wp-content\/uploads\/2018\/01\/Teste_performance_18.png\" alt=\"\" width=\"497\" height=\"353\" srcset=\"https:\/\/gianfratti.com\/wp-content\/uploads\/2018\/01\/Teste_performance_18.png 497w, https:\/\/gianfratti.com\/wp-content\/uploads\/2018\/01\/Teste_performance_18-170x120.png 170w, https:\/\/gianfratti.com\/wp-content\/uploads\/2018\/01\/Teste_performance_18-300x213.png 300w\" sizes=\"auto, (max-width: 497px) 100vw, 497px\" \/><\/p>\n<p>O primeiro contador a ser observado \u00e9 o <strong>Tempo de Processador<\/strong>. No periodo que sua aplica\u00e7\u00e3o estava em funcionamento, o porcentagem de ocupa\u00e7\u00e3o do processador foi em m\u00e9dia \u201caverage\u201d de 16%, ou seja o processador e seus cores estavam trabalhando tranquilamente, pois foi um valor do conteudo total.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-6840\" src=\"http:\/\/gianfratti.com\/wp-content\/uploads\/2018\/01\/Teste_performance_19.png\" alt=\"\" width=\"1024\" height=\"642\" srcset=\"https:\/\/gianfratti.com\/wp-content\/uploads\/2018\/01\/Teste_performance_19.png 1024w, https:\/\/gianfratti.com\/wp-content\/uploads\/2018\/01\/Teste_performance_19-300x188.png 300w, https:\/\/gianfratti.com\/wp-content\/uploads\/2018\/01\/Teste_performance_19-768x482.png 768w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/p>\n<p>O pr\u00f3ximo \u00e9 a porcentagem de <strong>Tempo de Ociosidade do Disco<\/strong>.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-6841\" src=\"http:\/\/gianfratti.com\/wp-content\/uploads\/2018\/01\/Teste_performance_20.png\" alt=\"\" width=\"1024\" height=\"653\" srcset=\"https:\/\/gianfratti.com\/wp-content\/uploads\/2018\/01\/Teste_performance_20.png 1024w, https:\/\/gianfratti.com\/wp-content\/uploads\/2018\/01\/Teste_performance_20-300x191.png 300w, https:\/\/gianfratti.com\/wp-content\/uploads\/2018\/01\/Teste_performance_20-768x490.png 768w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/p>\n<p>Observando, disco ficou na m\u00e9dia (average) 99%, ou seja, grande parte ocioso. Se esse numero estivesse abaixo de 20%, seria necess\u00e1rio investigar mais a fundo os processos que estavam causando esse afunilamento no disco e se seria necess\u00e1rio ou ajustar os aplicativos, distribuir cargas ou trocar o disco se sua tecnologia fosse devasada.<\/p>\n<p>Por \u00faltimo, iremos observar a quantidade de <strong>Mem\u00f3ria Dispon\u00edvel<\/strong> no periodo de execu\u00e7\u00e3o da aplica\u00e7\u00e3o.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-6842\" src=\"http:\/\/gianfratti.com\/wp-content\/uploads\/2018\/01\/Teste_performance_21.png\" alt=\"\" width=\"1024\" height=\"693\" srcset=\"https:\/\/gianfratti.com\/wp-content\/uploads\/2018\/01\/Teste_performance_21.png 1024w, https:\/\/gianfratti.com\/wp-content\/uploads\/2018\/01\/Teste_performance_21-300x203.png 300w, https:\/\/gianfratti.com\/wp-content\/uploads\/2018\/01\/Teste_performance_21-768x520.png 768w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/p>\n<p>Observe que na nossa medi\u00e7\u00e3o, a m\u00e9dia de mem\u00f3ria disponivel no servidor \u00e9 de 15 GB, ou seja, tem mem\u00f3ria suficiente no servidor que n\u00e3o foi alocada, mesmo com nossa aplica\u00e7\u00e3o em funcionamento.<\/p>\n<p><span style=\"color: #ff0000;\"><strong>Conclus\u00e3o:<\/strong><\/span> Na parte de recursos do servidor, n\u00e3o h\u00e1 afunilamento, iremos ent\u00e3o observar a parte do processo da aplica\u00e7\u00e3o. Caso houvesse algum afunilamento, poderiamos usar outros contadores mais espec\u00edficos como tempo de escrita em disco, medir cada Core do processador, mas normalmente n\u00e3o \u00e9 necess\u00e1rio entrar nessa granularidade.<\/p>\n<p>Iremos agora avaliar o processo Calculator como exemplo:<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-6843\" src=\"http:\/\/gianfratti.com\/wp-content\/uploads\/2018\/01\/Teste_performance_22.png\" alt=\"\" width=\"1024\" height=\"616\" srcset=\"https:\/\/gianfratti.com\/wp-content\/uploads\/2018\/01\/Teste_performance_22.png 1024w, https:\/\/gianfratti.com\/wp-content\/uploads\/2018\/01\/Teste_performance_22-300x180.png 300w, https:\/\/gianfratti.com\/wp-content\/uploads\/2018\/01\/Teste_performance_22-768x462.png 768w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/p>\n<p>Os coletores s\u00e3o: <strong>Handles (Ponteiros), Tempo de Processador, Contador de Thread, Private Bytes (Uso de Mem\u00f3ria)<\/strong><\/p>\n<p>Usando as dicas j\u00e1 citadas acima sobre Handles, Tempo de Processador, Uso de Mem\u00f3ria, podemos observar que o processo Calculator est\u00e1 funcionando corretamente, n\u00e3o caracterizando nenhum problema aparente.<\/p>\n<p><strong>Conclus\u00e3o Final<\/strong><\/p>\n<p>Sendo assim, chegamos a conclus\u00e3o de como utilizar tais contadores, pois podemos responder:<\/p>\n<p><strong>\u2013 Comportamento do sistema operacional quando sua aplica\u00e7\u00e3o est\u00e1 sendo executada;<\/strong><\/p>\n<p>Na an\u00e1lise acima, percebemos um comportamento adequado a n\u00edvel de recursos pelo sistema operacional, n\u00e3o havendo consumo excessivo dos mesmos.<\/p>\n<p><strong>\u2013 Quais os requisitos ideais de hardware, software e configura\u00e7\u00e3o para que sua aplica\u00e7\u00e3o funcione corretamente;<\/strong><\/p>\n<p>No momento da medi\u00e7\u00e3o, executei diversas opera\u00e7\u00f5es matem\u00e1ticas e percebi que o consumo m\u00e9dio de cada item (processador, disco, etc.) foi X. Caso deseje saber o ideal para minha aplica\u00e7\u00e3o, simplesmente adiciono os contadores que necessito dentro do Processo, fa\u00e7o as opera\u00e7\u00f5es de emiss\u00e3o de documentos, gerenciamento, etc. E em seguida tiro a m\u00e9dia \u201cAverage\u201d necess\u00e1rio e insiro em meu manual.<\/p>\n<p><strong>\u2013 Quando h\u00e1 lentid\u00e3o, se essa lentid\u00e3o est\u00e1 associada a um afunilamento de recursos e se esse afunilamento de recursos ocorre devido a pouco recurso, uso concorrente de outros aplicativos ou m\u00e1 gest\u00e3o de recursos de sua pr\u00f3pria aplica\u00e7\u00e3o.<\/strong><\/p>\n<p>N\u00e3o foi identificado nenhum problema de afunilamento.<\/p>\n<p><strong>\u2013 Quando ocorre um mal funcionamento de sua aplica\u00e7\u00e3o ou servidor, identificar se algum dos recursos est\u00e3o sobrecarregados ocasionando esse mal funcionamento.<\/strong><\/p>\n<p>Todos os recursos, Handles, Mem\u00f3ria, Processador estavam de acordo.<\/p>\n<p>Espero que esse post ajude e at\u00e9 a pr\u00f3xima!<\/p>\n<p>Fonte: <a href=\"https:\/\/qualidadeeti.wordpress.com\/2015\/11\/24\/testes-de-softwaremedindo-o-desempenho-de-sua-aplicao\/\" target=\"_blank\" rel=\"noopener\">https:\/\/qualidadeeti.wordpress.com\/2015\/11\/24\/testes-de-softwaremedindo-o-desempenho-de-sua-aplicao\/<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Introdu\u00e7\u00e3o Ol\u00e1 Pessoal, o objetivo desse post \u00e9 explicar passo a passo, inclusive entregar scripts prontos para voc\u00ea configurar, medir e interpretar os contadores de desempenho de um servidor ou computador, para que voc\u00ea consiga identificar os seguintes pontos: \u2013 Comportamento do sistema operacional quando sua aplica\u00e7\u00e3o est\u00e1 sendo executada; \u2013 Quais os requisitos ideais <span class=\"ellipsis\">&hellip;<\/span> <span class=\"more-link-wrap\"><a href=\"https:\/\/gianfratti.com\/index.php\/testes-de-software-medindo-o-desempenho-de-sua-aplicacao\/\" class=\"more-link\"><span>Read More &rarr;<\/span><\/a><\/span><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_exactmetrics_skip_tracking":false,"_exactmetrics_sitenote_active":false,"_exactmetrics_sitenote_note":"","_exactmetrics_sitenote_category":0,"_jetpack_memberships_contains_paid_content":false,"footnotes":""},"categories":[170,229,20],"tags":[230],"class_list":["post-6820","post","type-post","status-publish","format-standard","hentry","category-arquitetura","category-desempenho","category-dicas","tag-desempenho"],"jetpack_featured_media_url":"","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/gianfratti.com\/index.php\/wp-json\/wp\/v2\/posts\/6820","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/gianfratti.com\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/gianfratti.com\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/gianfratti.com\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/gianfratti.com\/index.php\/wp-json\/wp\/v2\/comments?post=6820"}],"version-history":[{"count":3,"href":"https:\/\/gianfratti.com\/index.php\/wp-json\/wp\/v2\/posts\/6820\/revisions"}],"predecessor-version":[{"id":6845,"href":"https:\/\/gianfratti.com\/index.php\/wp-json\/wp\/v2\/posts\/6820\/revisions\/6845"}],"wp:attachment":[{"href":"https:\/\/gianfratti.com\/index.php\/wp-json\/wp\/v2\/media?parent=6820"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/gianfratti.com\/index.php\/wp-json\/wp\/v2\/categories?post=6820"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/gianfratti.com\/index.php\/wp-json\/wp\/v2\/tags?post=6820"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}