Como otimizar um servidor web para alta performance?

1. Como otimizar um servidor web para alta performance?

Edwilson Laurentino
edwilsontj

(usa Debian)

Enviado em 16/04/2008 - 17:52h

Olá, galera.

Tenho uma necessidade aqui na minha empresa, uma aplicação web, rodando no TOMCAT5.5, está muito lenta.

Comecei a procurar na rede algo que pudesse me ajudar a melhorar a performance. (Não tenho como mexer na aplicação - é de terceiros)

Encontrei um artigo muito interessante, mas, um pouco antigo, no link abaixo link:

http://www.las.ic.unicamp.br/paulo/teses/20020411-MSc-Renato.Hirata-Otimizando.servidores.Web.de.alt...

O problema é que não encontrei nada mais atualizado. Alguem saberia onde posso encontrar essas informações mais atuais?
Como otimizar um servidor web?
Como colocá-lo para rodar no kernel?
Como alterar valores de cache de disco e buffers para otimizar o acesso?

Grato pela cooperação. (Vou continuar na minha busca, caso encontro algo, posto aqui).


  


2. cara

João Marcos Menezes
stremer

(usa Arch Linux)

Enviado em 17/04/2008 - 14:54h

vamos por parte.

1) Sua aplicação roda no Tomcat 5.5, provavelmente deve ser feita em java, verifique se realmente é uma aplicação em java. Pelo fato dela ser de terceiros dificulta mudar o webserver pois pode ser que a mesma seja incompativel com versões anteriores do tomcat como o 5 ou o 4. Talvez vale a pena fazer um teste nestes outros tomcat mas provavelmente não vai funcionar. O tomcat 4 é leve mas incompativel com uma penca de coisa o Tomcat 5 é um meio termo mas faltam recursos.

2) Se a aplicação for mesmo feita em java, tenha em mente que JAVA É LENTO. Sim. Java é (semi) interpretado, precisa alocar uma penca de coisa na memória, gasta memória a bessa. Tem que dar uma penca de volta pra fazer um hello world. Java só se torna melhor (em termos de performance, vamos deixar o resto de lado ok) que linguagens mais leves (como C por ex.) em casos onde tem recursos abundantes, vide por ex, 2 aplicações, 1 escrita em java e outra escrita em C. Em uma maquina de 1Ghz com 256Mb de memória a aplicação em C pode ser umas 10 vezes mais rapida que a aplicação em java. Se colocarmos em uma maquina com 100Gb de memória e 16 processadores de 2Ghz, a aplicação java talvez seja 10 vezes mais rapida que a aplicação C (isso por diversos motivos que não cabe agora entrar em detalhes tbem), portanto não adianta querer fazer milagre com java em maquina lenta.

3) Verifique se a aplicação é compativel com outro aplication/web server, talvez vale a pena testar com outro.

4) Um ultimo caso seria tentar compilar com o GCJ ou rodar com a VM do GCJ (caso a aplicação use java 1.4). Acho dificil funcionar mas com certeza melhora a performance.

Agora como você não é o PAI DA CRIANÇA fica dificil.

Agora se os problemas tão sendo outros e não a aplicação lenta em si, explique melhor, ok?

Abs


3. TOMCAT

Edwilson Laurentino
edwilsontj

(usa Debian)

Enviado em 18/04/2008 - 10:30h

Valeu pela explanação. Obrigado.

Mas, diga-me uma coisa: Tem como eu alocar a maior parte de recursos do sistema para o tomcat? Isto é porque aqui tem um storage com o VMware e essa máquina virtual só vai rodar essa aplicação, assim queria alocar tudo para o tomcat. É possível?


4. ae

João Marcos Menezes
stremer

(usa Arch Linux)

Enviado em 18/04/2008 - 10:52h

tem um parâmetro no tomcat (parâmetro do java na verdade) chamado Xmx, este parâmetro é a quantidade máxima de memória que o java vai usar, quanto mais melhor. Se tiver 1Gb na máquina, deixe um valor próximo por exemplo -Xmx864. Outra coisa é você deixar a VM com bastante memória e um cpu dedicado (ai ja entra em outra area que é config da VM). Outra coisa é deixar o processo com o nice bem alto (pesquise sobre prioridade de processos).
Bem aqui esta uma inicialização basica do tomcat que eu uso:

$JAVA_HOME\jre\bin\java -Xmx512 -Djava.endorsed.dirs=$TOMCAT/common/endorsed -Dcatalina.home=$TOMCAT -Dcatalina.base=$TOMCAT -Djava.io.tmpdir=$TOMCAT/temp

Como pode ver deixo 512mb pro java.



5. Re: Como otimizar um servidor web para alta performance?

Gabriel Francisco
gabrielfrc

(usa Ubuntu)

Enviado em 12/07/2011 - 13:44h

Uma dica é setar a "reciclagem" ou "reuso" de conexões que estão em TIME_WAIT:

http://mascote.me/2011/07/11/melhorar-performance-servidor-web-com-sockets-time_wait-em-excesso/






Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts