Erros de conexão do Tomcat com muitos usuários

2

Estou carregando um aplicativo que é executado no Tomcat (6.0.33). À medida que aumento o número de usuários, começo a ter problemas de conexão. Aqui está o que o jMeter retorna. Eu sou muito novo no Tomcat, alguém pode dar algum conselho sobre onde começar a procurar?

org.apache.http.conn.HttpHostConnectException: Connection to https://example.domain.edu refused
    at org.apache.http.impl.conn.DefaultClientConnectionOperator.openConnection(DefaultClientConnectionOperator.java:190)
    at org.apache.http.impl.conn.ManagedClientConnectionImpl.open(ManagedClientConnectionImpl.java:294)
    at org.apache.http.impl.client.DefaultRequestDirector.tryConnect(DefaultRequestDirector.java:640)
    at org.apache.http.impl.client.DefaultRequestDirector.execute(DefaultRequestDirector.java:479)
    at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:906)
    at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:805)
    at org.apache.jmeter.protocol.http.sampler.HTTPHC4Impl.sample(HTTPHC4Impl.java:284)
    at org.apache.jmeter.protocol.http.sampler.HTTPSamplerProxy.sample(HTTPSamplerProxy.java:62)
    at org.apache.jmeter.protocol.http.sampler.HTTPSamplerBase.sample(HTTPSamplerBase.java:1075)
    at org.apache.jmeter.protocol.http.sampler.HTTPSamplerBase.sample(HTTPSamplerBase.java:1064)
    at org.apache.jmeter.threads.JMeterThread.process_sampler(JMeterThread.java:426)
    at org.apache.jmeter.threads.JMeterThread.run(JMeterThread.java:255)
    at java.lang.Thread.run(Thread.java:680)
Caused by: java.net.ConnectException: Operation timed out
    at java.net.PlainSocketImpl.socketConnect(Native Method)
    at java.net.PlainSocketImpl.doConnect(PlainSocketImpl.java:351)
    at java.net.PlainSocketImpl.connectToAddress(PlainSocketImpl.java:213)
    at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:200)
    at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:432)
    at java.net.Socket.connect(Socket.java:529)
    at com.sun.net.ssl.internal.ssl.SSLSocketImpl.connect(SSLSocketImpl.java:570)
    at org.apache.http.conn.ssl.SSLSocketFactory.connectSocket(SSLSocketFactory.java:549)
    at org.apache.http.impl.conn.DefaultClientConnectionOperator.openConnection(DefaultClientConnectionOperator.java:180)
    ... 12 more
    
por dod 05.12.2012 / 16:25

2 respostas

1

Você estabeleceu aqui que, além de um número limite de usuários, seu serviço deixa de responder a novas conexões. Você precisa usar estatísticas e log no servidor de aplicativos para determinar o que causa esse problema. Suspender em novas conexões pode ser o resultado de contenção em qualquer número de recursos:

  • CPU, memória ou IO (o vmstat ajudará com isso)

  • Você pode estar acessando um ulimit para obter o número máximo de sockets, arquivos ou processos abertos (isso será registrado no syslog)

  • Seu aplicativo pode ficar parado aguardando o acesso a um recurso externo, como um banco de dados, que pode sofrer com qualquer um dos problemas de contenção de recursos descritos acima.

Resumindo: o teste de carga, pelo menos para fins de otimização do desempenho de serviço sob carga, só é útil se você combiná-lo com um monitoramento cuidadoso do serviço que está testando para quantificar seus resultados. Com esse monitoramento, o teste de carga informa apenas o limite após o qual seu serviço não é mais utilizável.

    
por 04.02.2013 / 18:50
0

Você deve aumentar os threads máximos na configuração do tomcat.

Aqui está uma explicação: link

    
por 04.02.2013 / 18:05

Tags