Desempenho de Web Site Java em Cloud Server  XML
Índice dos Fóruns » Assuntos gerais (Off-topic)
Autor Mensagem
atilaraphael
Debugger
[Avatar]

Membro desde: 08/09/2009 12:45:53
Mensagens: 67
Offline

Boa noite pessoal,

gostaria de algum comentário, sugestão de um Web Site Java

Estou utilizando um Cloud Server da TeHospedo

* SO: CentOS 6 64bits, acho que o processador é de um núcleo 2.4GHz, 2Gb Ram, Banda 20Mbps.
* Server http: Apache: 2.3 rodando porta 80
* Server JSP: TomCat 7.0.19 rodando na porta 8080
* BD: Postgre 8.4
* JRE: 6.0.26

O meu projeto utiliza:
* Conexão nativa com o banco JDBC.
* VRaptor 3.3.1
* Tiles 2.2.2

Creio que em determinado momento posso ter mais de 100 acessos simultâneos no sistema.


Minhas perguntas.

1) Meu servidor suporta atender mais de 100 acessos simultâneos?
2) Tem como eu melhorar ele?
3) Quando recebo uma requisição primeiro ela passa pelo apache e este encaminha para o tomcat. Vale apena isso, ou seria melhor parar o apache e colocar o tomcat de cara na internet na porta 80?


Desde já, agradeço.

This message was edited 1 time. Last update was at 05/08/2011 23:20:16


Att;
Atila Raphael
[MSN]
Lucas Cavalcanti
GUJ Hacker
[Avatar]

Membro desde: 08/07/2007 00:08:14
Mensagens: 6396
Offline

se o motivo pra não usar JPA/Hibernate for performance, vc otimizou o lugar errado.. o JPA/Hibernate tem umas estratégias de cache (1o e 2o nível) que podem melhora mto mais a sua performance do que usar jdbc puro na unha.

se vc precisa de performance, use o VRaptor com o Guice (só remover os jars do spring, e colocar os do guice)

a escalabilidade do sistema é mto mais do que o hardware e os frameworks utilizados.

o que vc pode fazer num primeiro momento é configurar caches, pool de conexões, memória da VM, parâmetros do servidor etc com valores razoáveis (não existem números mágicos pra isso)...

a partir do momento que vc conhecer o padrão de uso da aplicação vc tuna os valores pros que forem mais adequados.

--
Caelum
www.caelum.com.br

atilaraphael
Debugger
[Avatar]

Membro desde: 08/09/2009 12:45:53
Mensagens: 67
Offline

Olá Lucas,

achei que tava fazendo bom negócio tirando o hibernate da camada de persistência, fiz isso também porque já tive problema em inserir no banco com uma sessão e em outra sessão simultânea o dado inserido não apareceu, tive que restartar o servidor para aparecer. Então acho que ainda tenho que aprender muito sobre cache do hibernate.


Umas perguntas:

* Memória da VM é no JRE, certo?
* Pool de conexões é no postgre ou na minha aplicação?
* O cache é no tomcat ou em outro lugar?

Desde agradeço.

Att;
Atila Raphael
[MSN]
Lucas Cavalcanti
GUJ Hacker
[Avatar]

Membro desde: 08/07/2007 00:08:14
Mensagens: 6396
Offline

memória da VM é da JVM (que faz parte da JRE)... a memória padrão pra uma VM é um pouco baixa (tipo 256MB) e dá pra aumentar facilmente....

pool de conexões é na aplicação... se vc usa jdbc direto vc vai ter que fazer isso na mão, se for com o hibernate é só habilitar o c3p0

o cache que eu falei é o do hibernate...


isso do dado não aparecer em sessões simultâneas pode ser resolvido com estratégias de transação, ou com locks (otimista ou pessimista)...
use o hibernate... tuná-lo é mto mais fácil do que fazer tudo na mão e o resultado geralmente é melhor

--
Caelum
www.caelum.com.br

atilaraphael
Debugger
[Avatar]

Membro desde: 08/09/2009 12:45:53
Mensagens: 67
Offline

Valeu pelas dicas Lucas.

Att;
Atila Raphael
[MSN]
rlazoti
Virtual Machine Man
[Avatar]

Membro desde: 09/04/2008 11:02:51
Mensagens: 569
Localização: Sao Paulo / SP
Offline

atilaraphael,

Para ter idéia de como sua aplicação vai se comportar com determinada quantidade de requisições, você pode usar o JMeter ou o Apache Bench (mais conhecido como ab).

Rodrigo Lazoti
blog: http://www.rodrigolazoti.com.br
twitter: http://twitter.com/rodrigolazoti
[WWW]
 
Índice dos Fóruns » Assuntos gerais (Off-topic)
Ir para:   
Powered by JForum 2.1.8 © JForum Team