Apache Tomcat - Performance interna


Qual mortal desenvolvedor de sistemas que trabalha, principalmente, com Java nunca entrou em contato com o Apache Tomcat. Bom, mas para aqueles menos informados, saibam que ele é conteiner web, cuja função é servir aplicações web escritas em Java. Foi desenvolvido pela Apache Software Foundation

Vale lembrar, que o seu código é aberto e que a SUN considera o projeto como a Implementação de Referência para JSP e Java Servlet.

Em muitos casos, no nosso dia-a-dia, não temos acesso a JVM e ao SO no qual implantamos nossos sistemas. O que resta a nós, nesses casos, para incrementarmos a performance do Tomcat é configurará-lo internamente. A seguir, cito duas dicas básicas, de configuração interna do Apache Tomcat.

Ajustando o número de Threads:

Uma forma de controlar a performance de suas aplicações é ajustando o número de requisições das threads em uso. O Tomcat define por padrão um pool de threads para prover uma resposta rápida aos pedidos recebidos. Normalmente essa configuração padrão normalmente é suficiente para a maioria dos aplicações. Mas você pode ajustar esse pool de acordo com a real necessidade de sua aplicação. Para isso definimos as propriedades “minThreads” e “maxThreads”.

Um exemplo para a configuração da propriedade minThread é a seguinte: em um pequeno momento do dia seu site recebe dez requisições por segundo e cada requisição demora 1 segundo para ser processada, um minímo dez threads, alocadas inicialmente, deve ser o suficiente para garantir uma boa performance do seu servidor.

Agora precisamos configurar o máximo de threads que o servidor irá disponibilizar. Pois, provavelmente, teremos picos de acessos em determinados momentos do dia. Caso isso ocorra, o valor que definirmos na propriedade maxThreads, será o máximo de threads que serão realocadas aquelas iniciais para garantirmos que o servidor não fique ocupado, e garanta as requisições solicitadas. Só não podemos esquecer de termos um limite de thread que condiz realmente com a nossa real necessidade. Visto que, um número alto nessa configuração, poderá estourar a memória da JVM em um ataque malicioso que realizará um ataque em massa no servidor.

Podemos utilizar para testar as nossas configurações, ferramentas que realizam uma carga no servidor configurada por nós. E com a análise dos resultados obtidos podemos chegar a um ponto adequado para as nossas aplicações.

Essa configuração é feita no conector de sua aplicação no arquivo server.xml.

Desabilitando pesquisas de DNS

O servidor, onde está localicazada a nossa aplicação, precisará para gerar um log sobre cada requisição de um cliente, algumas informações com o número do IP ou o resultado de uma pesquisa na busca do seu nome no DNS. Porém, pesquisa de DNS utilizam banda de rede, envolvendo troca de informações de vários servidores.

O que pode acontecer é que um desses servidores poderá ficar inoperante, resultando em tempos de espera pelo nosso servidor. Para evitarmos isso podemos desabilitar as pesquisas de DNS. Após estar desabilitado, toda a requisição pelo servidor remoto (getRemoteHost() emHttpRequest), somente retornará o IP numérico, sem tentar resolver o seu nome.

Essa configuração também é feita no conector de sua aplicação no arquivo server.xml. Em um conector comum o atributo responsável por essa propriedade é o enableLookups.

Popularity: 70% [?]

Share and Enjoy: Estes ícones ajudam a compartilhar esse post com agregadores de notícias, trazendo mais informação para toda a comunidade.
  • bodytext
  • Rec6
  • del.icio.us
  • Sphinn
  • Facebook
  • Mixx
  • Google
  • E-mail this story to a friend!

Informações e links

Ajude a tornar mais útil esse blog, comentando os posts com dúvidas, dicas, críticas e/ou sugestões.

Também, caso tenha interessa e ache válido o conteúdo desse post, compartilhe-o com a sua rede de contatos ou até mesmo referencie-o em seu blog.


Outros posts
EJB: Stateless e Stateful Session Beans
Diagrama de implantação (deployment)

Escreva um comentário

Utilize esse espaço para dizer-nos o que você pensa a respeito do assunto. Você pode utilizar HTML para formatar seu comentário.

Comentários

Achei bem bacana esse pequeno artigo, acho que deveria vir mais assuntos relacionados a esses.

Abraços e Parabéns.

Bha cara legal o artigo. não sabia dessa questão do DNS.
achava que o ip ja vinha junto com o cabeçalho http.

muito legal.

Uma boa dica é utilizar o lambdaprobe.
que é uma aplicação de gerenciamento do tomcat.
ele fornece varios graficos de utilização das threads
e consume de memoria e cpu

segue o link:
http://www.lambdaprobe.com/d/index.htm

Jerônimo,

Exato, esse projeto é muito interessante. Já tive a oportunidade de utilizá-lo em alguns projetos. Realmente é uma boa ferramente de profile e que pode ser utilizado em outros servidores de aplicação por ser um arquivo WAR.

Obrigado pelo feedback de vocês.