| Autor |
Mensagem |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 18/02/2008 10:31:52
|
Jedi_FeniX
Virtual Machine Man
![[Avatar]](/images/avatar/06ab8d9df63b836129099247301c038b.jpg)
Membro desde: 26/04/2007 14:32:30
Mensagens: 586
Offline
|
Estou desenvolvendo uma aplicação para aguentar várias requisições ao mesmo tempo.
A aplicação começa por uma servlet, que recebe alguns parâmetros por GET e guarda os parâmetros em um arquivo. Sendo que quando coloquei esta servlet para teste, recebendo 1000 requisições de um outro computador dá erro, quando o loop chega mais ou menos em 970 requisições o tomcat me responde um status 500, erro interno no servidor.
Alguém saberia o que está acontecendo? O tomcat não aguenta o tranco? Se não aguenta, alguém saberia recomendar algum outro servidor open-source?
Ou seria melhor usar um arquivo jsp em vez de uma servlet no tomcat?
|
www.bau-de-dev.com |
|
|
 |
|
|
![[Post New]](/templates/default/images/icon_minipost_new.gif) 18/02/2008 10:40:10
|
urubatan
Moderador
![[Avatar]](/images/avatar/fe9fc289c3ff0af142b6d3bead98a923.jpg)
Membro desde: 21/09/2002 10:31:26
Mensagens: 2481
Localização: Porto Alegre/RS
Offline
|
o tomcat aguenta, mas o teu servlet aguenta?
|
[]'s
Rodrigo Urubatan
http://www.urubatan.com.br
Melhor livro de RoR do brasil: http://livro.urubatan.com.br
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 18/02/2008 10:42:58
|
Leozin
JWizard
![[Avatar]](/images/avatar/5dca4c6b9e244d24a30b4c45601d9720.png)
Membro desde: 18/06/2005 21:01:26
Mensagens: 2310
Localização: São Paulo/SP
Offline
|
você que tem que montar um ambiente que suporte essas 1000 requisições
não é simplesmente cuspir código em um servlet que vai aguentar 1 milhão de requisições/seg
já fizemos testes aqui com struts com mais de 30 mil requisições de crud (cerca de 10/seg) e aguentou (claro, tivemos que aumentar um pouco da memória da jvm)
|
http://www.leozin.com.br/blog |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 18/02/2008 10:46:39
|
Jedi_FeniX
Virtual Machine Man
![[Avatar]](/images/avatar/06ab8d9df63b836129099247301c038b.jpg)
Membro desde: 26/04/2007 14:32:30
Mensagens: 586
Offline
|
como montar este ambiente?
A minha servlet é bem simples, recebe uns parâmetros por get, e grava em um arquivo os parâmetros, abre e fecha o arquivo e usa o log4j para fazer uns logs. Coisa bem simples.
|
www.bau-de-dev.com |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 18/02/2008 11:05:21
|
rubinelli
JavaEvangelist
![[Avatar]](/images/avatar/5e15fb59326e7a9c3d6558ca74621683.jpg)
Membro desde: 26/04/2005 11:18:25
Mensagens: 469
Offline
|
Você abre, altera, e fecha o mesmo arquivo a cada requisição? Provavelmente esse é o gargalo, mas o certo mesmo é arranjar uma ferramenta pra fazer o profiling da sua aplicação.
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 18/02/2008 11:07:32
|
Jedi_FeniX
Virtual Machine Man
![[Avatar]](/images/avatar/06ab8d9df63b836129099247301c038b.jpg)
Membro desde: 26/04/2007 14:32:30
Mensagens: 586
Offline
|
Vou colocar o código da Servlet para vcs darem uma olhada.
Abaixo é o código da Servlet:
Abaixo a classe que servlet abre:
This message was edited 1 time. Last update was at 18/02/2008 11:08:45
|
www.bau-de-dev.com |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 18/02/2008 11:08:37
|
LeoMarola
JavaGuru
![[Avatar]](/images/avatar/e896db75d35788e14104e4eb490e725b.jpg)
Membro desde: 17/07/2006 10:35:11
Mensagens: 201
Localização: Rio de Janeiro
Offline
|
Bom dia Jedi,
Provavelmente seu Tomcat deve estar com os parêmetros default de configuração.
Além de aumentar os parâmetros de memória da JVM como foi dito pelo amigo a pouco, se vc pretende simular um ambiente com o Tomcat recebendo uma carga dessa, poderia pensar tb em por um Apache na frente ;D
Caso você não queira perder muito tempo integrando um Apache HTTP Server e um Tomcat, dê uma olhada aqui:
http://tomcat.apache.org/tomcat-6.0-doc/config/http.html
Acredito que ajude
|
@Test
SCJP 5
SCWCD 5
SCBCD 5
SCEA 5 (Starting..)
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 18/02/2008 11:10:37
|
urubatan
Moderador
![[Avatar]](/images/avatar/fe9fc289c3ff0af142b6d3bead98a923.jpg)
Membro desde: 21/09/2002 10:31:26
Mensagens: 2481
Localização: Porto Alegre/RS
Offline
|
IO é uma das operações mais caras, uma idéia seria criar um buffer para estas escritas em arquivo, assim não iria bloquear a requisição.
|
[]'s
Rodrigo Urubatan
http://www.urubatan.com.br
Melhor livro de RoR do brasil: http://livro.urubatan.com.br
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 18/02/2008 11:10:57
|
Jedi_FeniX
Virtual Machine Man
![[Avatar]](/images/avatar/06ab8d9df63b836129099247301c038b.jpg)
Membro desde: 26/04/2007 14:32:30
Mensagens: 586
Offline
|
como posso aumentar a memória da jvm? E sim está tudo default.....
E vou mudar de IO para buffer.....muito obrigado pela dica......
This message was edited 1 time. Last update was at 18/02/2008 11:18:10
|
www.bau-de-dev.com |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 18/02/2008 11:46:07
|
nbluis
GUJ Master
![[Avatar]](/images/avatar/f0682320ccbbb1f1fb1e795de5e5639a.jpg)
Membro desde: 27/05/2006 01:31:51
Mensagens: 1531
Localização: Porto Alegre - RS
Offline
|
Deixe seus properties em memória. (economiza IO)
Utilize uma maneira melhor de escrever esse arquivo(de preferencia não escreva em arquivo a cada requisição).
Se for utilizar arquivos mesmo, utilize NIO.
Transfira o máximo de dados possíveis para a memória(cache) para aumentar a sua performance
.
Tente diminuir ao máximo a criação de objetos por requisição.
|
Luis Eduardo Bohrer
Any fool can write code that a computer can understand. Good programmers write code that humans can understand. |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 18/02/2008 12:00:09
|
Jedi_FeniX
Virtual Machine Man
![[Avatar]](/images/avatar/06ab8d9df63b836129099247301c038b.jpg)
Membro desde: 26/04/2007 14:32:30
Mensagens: 586
Offline
|
Teria como criar um conexão com um arquivo uma única vez?
Por exemplo, a primeira requisição foi feita, o arquivo foi aberto e ai deixá-se a conexão em memória, para que as próximas requisições possoam usar a mesma conexão, depois de um certo tempo da conexão não sendo usada fechá-se a mesma.
|
www.bau-de-dev.com |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 18/02/2008 15:08:50
|
Jedi_FeniX
Virtual Machine Man
![[Avatar]](/images/avatar/06ab8d9df63b836129099247301c038b.jpg)
Membro desde: 26/04/2007 14:32:30
Mensagens: 586
Offline
|
de IO para buffer, mas mesmo assim está dando erro.
Acho que o problema é a configuração do tomcat, como posso configurá-lo para um ambiente de produção? aonde encontro algum tutorial de configuração?
|
www.bau-de-dev.com |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 18/02/2008 15:13:32
|
kubanacan
JavaGuru
Membro desde: 24/07/2005 21:18:12
Mensagens: 200
Localização: Rio de Janeiro
Offline
|
Aproveitando..
onde aqui no GUJ ocorreu esses testes?
existe algum post?
normalmente eu configuro a Jvm aumentando a memória, mas como disse o Leozin, minha aplicação 'código"
deve está preparada p isso? como?
abraços
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 18/02/2008 16:04:50
|
chicobento
JavaGuru
![[Avatar]](/images/avatar/c8e721e640e463f34fdd4.gif)
Membro desde: 14/06/2004 01:44:04
Mensagens: 226
Localização: Campinas
Offline
|
Seu tomcat está configurado pra receber quantas conexões ?
http://tomcat.apache.org/tomcat-6.0-doc/config/http.html wrote:Each incoming request requires a thread for the duration of that request. If more simultaneous requests are received than can be handled by the currently available request processing threads, additional threads will be created up to the configured maximum (the value of the maxThreads attribute). If still more simultaneous requests are received, they are stacked up inside the server socket created by the Connector, up to the configured maximum (the value of the acceptCount attribute. Any further simultaneous requests will receive "connection refused" errors, until resources are available to process them.
[]'s
|
SCEA 5 |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 18/02/2008 16:28:35
|
Jedi_FeniX
Virtual Machine Man
![[Avatar]](/images/avatar/06ab8d9df63b836129099247301c038b.jpg)
Membro desde: 26/04/2007 14:32:30
Mensagens: 586
Offline
|
Aonde posso ver esta informação?
|
www.bau-de-dev.com |
|
|
 |
|
|