Как я могу провести стресс-тестирование приложения apache tomcat?
Я пробовал использовать jmeter, но после определенного числа получаю ошибку от jmeter:
java.net.ConnectException: Connection timed out: connect
at java.net.PlainSocketImpl.socketConnect(Native Method)
at java.net.PlainSocketImpl.doConnect(Unknown Source)
at java.net.PlainSocketImpl.connectToAddress(Unknown Source)
at java.net.PlainSocketImpl.connect(Unknown Source)
at java.net.SocksSocketImpl.connect(Unknown Source)
at java.net.Socket.connect(Unknown Source)
at java.net.Socket.connect(Unknown Source)
at sun.net.NetworkClient.doConnect(Unknown Source)
at sun.net.www.http.HttpClient.openServer(Unknown Source)
at sun.net.www.http.HttpClient.openServer(Unknown Source)
at sun.net.www.http.HttpClient.<init>(Unknown Source)
at sun.net.www.http.HttpClient.New(Unknown Source)
at sun.net.www.http.HttpClient.New(Unknown Source)
at sun.net.www.protocol.http.HttpURLConnection.getNewHttpClient(Unknown Source)
at sun.net.www.protocol.http.HttpURLConnection.plainConnect(Unknown Source)
at sun.net.www.protocol.http.HttpURLConnection.connect(Unknown Source)
at org.apache.jmeter.protocol.http.sampler.HTTPJavaImpl.sample(HTTPJavaImpl.java:479)
at org.apache.jmeter.protocol.http.sampler.HTTPSamplerProxy.sample(HTTPSamplerProxy.java:62)
at org.apache.jmeter.protocol.http.sampler.HTTPSamplerBase.sample(HTTPSamplerBase.java:1054)
at org.apache.jmeter.protocol.http.sampler.HTTPSamplerBase.sample(HTTPSamplerBase.java:1043)
at org.apache.jmeter.threads.JMeterThread.process_sampler(JMeterThread.java:416)
at org.apache.jmeter.threads.JMeterThread.run(JMeterThread.java:271)
at java.lang.Thread.run(Unknown Source)
Насколько велико это число?
Не могли бы вы рассказать нам больше о приложении, которое находится в топе?
Насколько серьезное развертывание вы планируете?
Если вы используете Windows XP, существует так называемое ограничение полуоткрытого соединения, которое вызывало проблемы в прошлом. Это похоже на ваш случай, все работает нормально, пока не достигнет определенного количества параллельных подключений.
Вот как Я исправил эту проблему.
Это сообщение показывает, что JMeter попытался подключиться к вашему приложению, но не смог. Обычно это означает, что Tomcat перестал отвечать на запросы, потому что вы достигли некоторого лимита. Существуют ограничения на количество потоков, которые Tomcat запускает для обработки запросов, а также ограничения, налагаемые виртуальной машиной Java, которые могут остановить обработку запросов (скорее всего, первое).
JMeter - один из лучших инструментов, которые я обнаружил для фактической нагрузки приложения, однако вы также можете найти Java Melody бесценный инструмент для использования вместе с JMeter. Он может обеспечить более глубокое представление о том, что делает ваше приложение (например, сколько памяти оно использует, время отклика для разных страниц, как часто начинается сборка мусора и т. Д.). И в нем много красивых графиков.
Вы также должны проверить этот чтобы дать вам указатели, когда дело доходит до настройки tomcat (в сочетании с официальной документацией, чтобы убедиться, что некоторые вещи по-прежнему действительны или применимы в вашей ситуации).
Если это будет интенсивно используемая система, я бы также подумал об установке Собственные библиотеки Apache (Tomcat подскажет вам в журналах, когда вы его запустите). Протестируйте свое приложение до и после и посмотрите, помогают ли они (они кодируют определенные части Tomcat на C, а не на Java, чтобы обеспечить повышение производительности. В первую очередь, это часть фактической обработки соединения и некоторые криптографические функции).
Я бы прочитал это как уже испытание, но оно не удалось!
Альтернативными инструментами являются скамья apache или просто wget
в режиме паука.
Или более сложные инструменты, такие как HP Load Runner или Quick Test Pro.
в руководстве по tomcat говорится о максимальном количестве одновременных запросов, поэтому вам, возможно, придется настроить систему для достижения ваших требований;
Во время запуска сервера этот коннектор создаст ряд потоков обработки запросов (на основе значения, настроенного для атрибута minSpareThreads). Для каждого входящего запроса требуется поток на время этого запроса. Если одновременно получено больше запросов, чем может быть обработано доступными в данный момент потоками обработки запросов, будут созданы дополнительные потоки до настроенного максимума (значение атрибута maxThreads). Если поступает еще больше одновременных запросов, они складываются внутри сокета сервера, созданного соединителем, до сконфигурированного максимума (значение атрибута acceptCount. Любые дальнейшие одновременные запросы будут получать ошибки «соединение отклонено», пока ресурсы не станут доступными. обработать их.
http://tomcat.apache.org/tomcat-5.5-doc/config/http.html