domingo, 7 de agosto de 2016

Coletando metricas com Jmeter de aplicações no Tomcat

Apache JMeterÉ até comum se desenvolver aplicativos que funcionam bem localmente nos testes, mas quando se faz o deploy em produção e submete uma carga de trabalho real, explode erro pra tudo que é lado, inclusive chegando a derrubar servidores relativamente robustos com estouro de memória, transações que não se concretizam, etc. 

Nesse cenário caótico é possível coletar dados e saber o que está provocando tanto problema, claro que além dos arquivos de logs, no nosso caso o Tomcat.
Quando já deu m#$*& nada melhor do que verificar o que ta acontecendo em tempo real e correr pra resolver.
Relembrando algumas práticas, fazendo outras pesquisas, compilei aqui algumas técnicas aplicadas no container web Tomcat que, de modo geral, pode nortear os rumos pra solução de erros em um cenário como descrito.
Três fatores impactam negativamente o desempenho do Tomcat mais do que qualquer outros:
1)      ​atrasos na rede;
2)      latência cliente remoto;
3)      Arquitetura do aplicativo.

Na maioria dos casos o problema é quase sempre o item 3, não seria de se espantar.
Claro que sem medir, sem ferramentas adequadas ou um profissional com amplo domínio do Tomcat e conhecedor da arquitetura do produto, ficamos meio perdidos sem elementos que apontam onde está exatamente o gargalo(s).
Por isso, a primeira coisa a fazer seria lançarmos mão de ferramentas de coleta de dados de tráfico, requisições HTTP, conexões JDBC, etc. Dai podemos apontar com segurança onde está o foco do problema. Se confirmado que a falha maior seja da arquitetura do sistema, então, podemos determinar de que tipo exatamente se trata esse problema.
Dessa forma, uma opção seria otimizar o Tomcat direcionado de tal forma que mesmo falhas ou consumo excessivo da aplicação não seja capaz de comprometer o servidor. Em último caso, se não tiver outro caminho, remodelar os gargalos da aplicação junto da equipe de desenvolvimento.
Aqui uma noção dos tipos de teste:

Uma boa sugestão para coletar métricas no Tomcat é o Apache Jmeter. Mais detalhes:

Não sou especialista Jmeter, no entanto com alguma leitura da documentação e montando laboratórios, pude notar que dá para chegar à alguns resultados com certa facilidade.



Utilizando o Jmeter

Basta fazer o download do zip da última versão:


Descompactar, em seguida ir na pasta bin (no meu exemplo ficou C:\apache-jmeter-3.0\bin) e então executar o arquivo ApacheJMeter.jar.

Para criar um teste realmente funcional básico, basta uma rápida leitura da documentação aqui:


No caso de páginas que precisa passar parâmetro e efetuar login, deve olhar principalmente a seção “5.6 Logging in to a web-site” que é onde mostra a forma de configurarmos um usuário e senha em que o Jmeter irá fazer requisições e logar


Outra forma bem interessante, a qual sugiro, para montar um bom scritp de testes é gravar a navegação feita na aplicação alvo através do browser no Jmeter.

Configurando o Jmeter pra gravar navegação do Browser e executar posteriormente testes de carga e coleta de métricas

No link abaixo um excelente manual. Basta seguir esse artigo para criar a configuração necessária. 


Após criar as etapas conforme listado no artigo acima, na opção "Servidor HTTP Proxy" quando clicar no botão Iniciar ou Start



então irá surgir as seguintes telas:



O próprio Jmeter gera um certificado a ser utilizado no Browser estabelecendo assim relação de confiança nos testes entre a Jmeter, JVM, Windows e o Browser

Importando o certificado no Chrome: 



Conforme dito na mensagem de geração do certificado, o mesmo foi salvo na pasta bin do Jmeter



Pronto. Agora ao navegar, no site configurado em “Nome do Servidor ou IP”, será capturado a navegação conforme a opção “Padrões de URL a Serem Incluídos”

E agora, o que fazer com os dados coletados?

Veja esses artigos selecionados que vão dar uma boa resposta a nossa indagação:
http://sumoners.github.io/2015/10/07/performance-da-sua-aplicacao-jmeter
http://www.bugbang.com.br/destilando-jmeter-i-introducao-e-conceitos


Como monitorar o servidor com JMeter

Aqui um ótimo artigo sobre o assunto. Vale a pena conferir:
www.blazemeter.com/blog/how-monitor-your-server-health-performance-during-jmeter-load-test


http://pt.slideshare.net/joao.galdino/abrindo-a-caixa-de-ferramentas-atirando-pedras-com-jmeter

sexta-feira, 27 de fevereiro de 2015

.Net e o open source - Dot Net também pode ser mantido pela "Comunidade"



.Net e o open source



A palestra explora 3 vertentes open source do ecossistema .NET. A primeira delas - partes que foram abertas: ASP.NET, F#, MEF, EF e o ASP.NET vNext, onde contribuições externas passam a ser aceitas. A segunda - a implementação alternativa do .NET a outras plataformas: Mono e Xamarin; e a terceira - bibliotecas e ferramentas desenvolvidas em 


https://github.com/monoman



domingo, 30 de novembro de 2014

Trabalhando com Arquivos e Stream em Dot Net


Não vou falar muito sobre o tema, apenas recomendar o excelente artigo do Macoratti na iMaster que contém muita informação pra um estudo proveitoso sobre o assunto:
Acesso aqui






Pra quem tiver acesso, tem esse excelente curso no Pluralsight:
Streaming in .NET 4.5


sábado, 13 de setembro de 2014

Certificação Microsoft - MCSD Prova 70-483


Antes de começar qualquer conversa, acessa essa página e da uma boa olhada:

www.microsoft.com/learning/en-us/certification-overview.aspx


As certificações da Microsoft estão divididas em 5 grande áreas, escolha uma de acordo com seu perfil ou experiência profissional e veja as opções de provas:
  1. Servidor (Windows Server, Exchange Server, Lync, SharePoint)
  2. Área de Trabalho (Windows)
  3. Aplicativos (Office, Office 365, Microsoft Dynamics)
  4. Banco de Dados (SQL Server)
  5. Desenvolvedor (Visual Studio, Windows Phone, e aplicativos SharePoint)
Um técnica fundamental pra quem vai tirar qualquer certificação é analisar os objetivos da prova, ver cada um dos tópicos que serão abordados.

A minha área é a de Desenvolvedor, dentro nesse grupo tenho minha busca direcionada a certificação MCSD - Windows Store Apps, mais especificamente desenvolvimento de aplicações web utilizando C#, então posto os links das 3 provas que compõem esse pacote:
Acessando essas páginas, dentro delas tem diversos links pros assuntos que caem na prova, recomendo.

Para a prova 70-483, este é o livo indicado

Na Livraria Cultura aqui

Os autores:
Tiberiu Covaci
Gerry O’Brien
Rod Stephens
Vince Varallo




Esse é mapa de certificações da Microsoft:



Apenas pra registrar, bom material para prova 70-480ou seja, HMTL 5, CSS3 e JavaScript
www.microsoftvirtualacademy.com/training-courses/learn-html5-with-javascript-css3-jumpstart-training

Site de treinamento oficial:
www.microsoft.com/pt-br/learning/visual-studio-training.aspx

Esse outro site tem muito material interessante e faz parte do curso do link acima
http://codeshow.codeplex.com

Outra visão do mapa de certificações:
www.microsoft.com/portugal/educacao/Educacao.aspx?id=6023

ASP .Net
www.asp.net/aspnet/overview/making-websites-with-aspnet/making-websites-with-aspnet

Web API
www.asp.net/web-api

quarta-feira, 13 de agosto de 2014

Convertendo aquivo scanneado de PDF para imagem e depois para texto (Word)

Vamos imaginar o seguinte cenário:

Temos um PDF cujo conteúdo é resultante do scanner de documentos com imagens, tabela, texto, etc, e precisa que tudo seja convertido para um documento Word, inclusive as tabelas pra editar os valores e tudo mais, carimbos, ou seja, exatamente como estava na imagem.

Converter isso pro Word direto é muito complicado e geralmente as ferramentas de OCR gratuitas não fazem de forma satisfatória.
Então segue um meio que tenho utilizado de forma satisfatória:

Convertendo o PDF para imagem

Quando seu arquivo está em PDF, o qual é resultado do scaneamento de um documento que não ficou na verdade como PDF puro, mas sim como uma imagem atachada no PDF, precisa antes converter esse arquivo para imagem de verdade, caso não utilize uma ferramenta que faça a conversão direto para o Word, as quais ainda não consegui encontrar uma que realmente funcione free. As que utilizei apenas converte o texto do PDF como uma grande imagem e cola no arquivo Word. O que não adianta nada, já que a intenção é poder editar e formatar o texto convertido.Para isso pode utilizar a seguinte ferramente também online: 

http://pdf2jpg.net




O passo seguinte então é converter as imagens em texto


Convertendo a Imagem para texto (Word)

Para converter uma imagem que contenha ou que seja texto pra word, deve se utilizar uma tecnologia chamada OCR (http://pt.wikipedia.org/wiki/Optical_character_recognition) 

Pode lançar mão de ferramentas que atualmente já tem online na web e gratuitas, como pode ser visto no site