Ferramentas para SITE (não apenas sistema)

Pessoal,

Eu tenho um site, feito em java, que possui média de mil usuários online, com picos de cerca de 5 mil usuários simultaneos. Os acessos variam dependendo do mês, mas chega a cerca de 3 milhões e meio de acessos no mês (depende do mês).

Bom, quando o fiz, usei Spring e Hibernate, o que com o passar do tempo e aumento de acessos começou a me dar dor de cabeça. Fiz o site em 2007 e hoje as versões estão defasadas, e as dores de cabeça com Out of Memory constantes.

Eu pensei em refazer o site em PHP. O que vocês me aconselham ? Se eu quisesse refazer em Java, quais frameworks me aconselhariam ? O site roda no tomcat. O site possui uma parte de administração e outra que é o site em si. Para esta parte, que é o site mesmo, estou cada vez mais usando SQL ao invés do Hibernate, por conta da performance.

desde já agradeço !

Eu não sei até onde o php é mais poderoso que o Java.

Mas um framework que estou trabalhando atualmente e atende a minha demanda é:
http://www.yiiframework.com/

Olha cara, acho que até lugar nenhum o PHP é mais potente que o Java… mas gostaria de opiniões para usabilidade do Java em sites evitando o famoso OutOfMemory…

“Chutando” que o código está limpo e funcional sme gambiarras, acredito que você devia melhorar a infra-estrura do servidor !

Estou curioso pra ver as respostas neste tópico.

Guilherme, que tipo de coisas devem ser vistas quando você diz em “melhorar a infra-estrutura do servidor”?

O grande problema é que as hospedagens java são muito limitadas (soluções nacionais). Elas esperam hospedar sistemas, que não possuem grande número de acessos, e não um site propriamente dito. Além disso, pelo menos onde eu hospedo, eles não gostam de aumentar a memória da JVM e cobram R$44,00 por cada 256MB de memória… :expressionless:

Como é um site com bastante acesso e que presta serviços para outros sites, não posso deixar o site fora do ar esperando uma resposta de um ticket do exterior por exemplo, por isso a importância de uma hospedagem aqui dentro.

Como criei o site com uma versão antiga do Spring, lá de 2007, sei que muitas melhorias já foram feitas e o objetivo do tópico é pra saber se vale a pena gastar energias atualizando a versão, ou é melhor partir pro PHP mesmo ou outro framework me ajudaria mais.

Um servidor cloud não seria mais vantagem que ficar atrelado a infraestrutura de hospedagens? Ainda mais considerando o numero de acessos.

velho, talvez sim… eu não sei quanto está custando hoje em dia, mas tenho um trauma do cloud pq já usei da Locaweb. Eu tinha hospedagem normal deles, só me dava dor de cabeça e eu tinha 80% menos visitas, aí eles me ofereceram o Cloud, que resolveria meus problemas. O valor era mais que o dobro, e meus problemas mais que dobraram também, o site simplismente ficou um lixo, não funcionava direito e era muuuuuito lento. Mas acho q essa não deve ser a realidade desse tipo de serviço.

Até hoje não consegui alocar mais que 1 giga em qualquer aplicação java, rodando numa única JVM. Acredito que a solução seja por este motivo várias JVM atendendo sua aplicação, por isso Cloud.
O php pode ser uma solucao interessante, eu posso estar errado, o proprio GUJ é feito sobre PHP

Estranho, afinal conheço aplicações pesadas a nivel de RAM que rodam em java, não tenho nenhum dado pra mostrar, mas o próprio eclipse, quando alterado para utilizar uns 3 gb de RAM fica absurdamente masi rápido, e somando todas as suas threads ele ultrapassa fácil 1gb

Quanto ao cloud, o ideal é pegar uma hospedagem de confiança que apesar de ser um pouco mais caro, é garantido. A vantagem e a desvantagem do cloud é que voce pode fazer tudo o que precisar, logo o modo como o site rodará depende do modo como voce configura o servidor de aplicação.

Rode um profiler no seu site para identificar problemas de memória:
http://profiler.netbeans.org/

É uma boa deixar ligada a opção:
-XX:-HeapDumpOnOutOfMemoryError

Para que ele gere um mapa da memória antes do OutOfMemory destruir a thread que estourou com o problema. Esse mapa você poderá abrir no profiler.

  1. Muito cuidado com variáveis estáticas: elas geralmente mantém tudo o que estão associadas vivo;
  2. Certifique-se de fechar corretamente conexões, statements e resultsets;
  3. Existem também argumentos para configurar os limites máximos de memória que a VM pode consumir (-XMX e -XMS). Verifique no seu servidor como configura-los.

[quote=renatogrosz]Até hoje não consegui alocar mais que 1 giga em qualquer aplicação java, rodando numa única JVM. Acredito que a solução seja por este motivo várias JVM atendendo sua aplicação, por isso Cloud.
O php pode ser uma solucao interessante, eu posso estar errado, o proprio GUJ é feito sobre PHP[/quote]

Está errado:

É java. E um pouco de Ruby na página inicial.

Eu não sei onde o PHP é inferior ao java.
Muito mais simples, por ser uma linguagem de script (manja javascript?), mas com a vantagem de ser server side.
Usa Hibernate? PHP possui o PHP AR, que é um framework ORM para PHP que usa o conceito active record, que veio do ruby on rails e é muito mais intuitivo e rápido que o parente rico Hibernate. Sem falar em Doctrine…
Vai usar JDBC? PHP possui o PDO que tem comportamento semelhante ao PreparedStatement.
MVC? Zend, Cake, Smarty entre outros.
Templates e “criadores”? Que tal joomla?
Orientação a objetos? Sim, suporta tudo o que java possui.

Além de não precisar ser compilado!

cleciusjm - Juro que tentei vários parametros para alocar mais memória mas não consegui, quais parametros utilizou no eclipse?

ViniGodoy - Fico bastante surpreso com o desempenho do forum, não tenho ideia do “consumo” do software em termos de quantidade de usuarios e memória, parece que os acesso ao banco de dados não é feito por framework, você acredita que as tecnologias envolvidas no forum podem ser a solução ao problema do rbonjour?