Я тестирую приложение, работающее на Tomcat (6.0.33). По мере увеличения числа пользователей у меня начинаются проблемы с подключением. Вот что возвращает jMeter. Я новичок в Tomcat, может ли кто-нибудь дать совет, где даже начать поиск?
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
Здесь вы установили, что при превышении порогового количества пользователей ваша служба перестает отвечать на новые подключения. Вам необходимо использовать статистику и ведение журнала на сервере приложений, чтобы определить, что вызывает эту проблему. Зависание новых подключений может быть результатом конкуренции за любое количество ресурсов:
ЦП, память или ввод-вывод (в этом поможет vmstat)
Вы могли попасть в ulimit для максимального количества открытых сокетов, файлов или процессов (это будет записано в системный журнал)
Ваше приложение может застрять в ожидании доступа к внешнему ресурсу, например к базе данных, что само по себе может пострадать от любой из проблем с конфликтом ресурсов, описанных выше.
Вкратце: нагрузочное тестирование, по крайней мере, с целью оптимизации производительности службы под нагрузкой, полезно только в том случае, если вы объедините его с тщательным мониторингом службы, которую вы тестируете, с целью количественной оценки ее результатов. При таком мониторинге нагрузочное тестирование сообщает вам только порог, после которого ваш сервис больше не используется.
Вы должны увеличить максимальное количество потоков в конфигурации tomcat.
Вот объяснение: http://tomcat-configure.blogspot.com.es/2009/01/tomcat-maxthreads-configuration.html