#java #performance #tomcat #jvisualvm
#java #Производительность #tomcat #jvisualvm
Вопрос:
Я создал веб-приложение Java servlet без состояния, и требуется принимать не менее 5000 транзакций в секунду (со 150 параллельными потоками). Я использую ehcache вместе с SQL server 2005, чтобы избежать записи на медленный жесткий диск.
В тесте производительности (с потоками Jmeter 150) мне удается выполнять примерно 2800 транзакций в секунду (менее половины ожидаемого). Когда я беру сэмплер внутри JVisualVM, я замечаю, что:
org.apache.catalina.connector.requestfacade.getsession() <-- take more than 44.7% of CPU time
Есть идеи, что делает requestfacade.getsession() и есть ли способ ускорить это? хотя я должен оптимизировать свой код, мне все еще нужно выяснить, что делает приведенная выше строка, выполнение которой со скоростью 5000 в секунду практически невозможно.
Tomcat conf:
-один экземпляр Tomcat (6.0.23) -С использованием Connectir executor, с максимальным потоком 150
Server conf:
-Windows 2008
-четырехъядерный процессор xeon
-8 ГБ оперативной памяти
-Жесткий диск raid 5 емкостью 1 ТБ
Любая помощь должна быть оценена!
Комментарии:
1. Если ваш сервлет действительно не имеет состояния, почему он обращается к сеансу?
2. @millhouse не могли бы вы передать это как ответ? тогда я могу принять это как ответ
Ответ №1:
Если ваш сервлет действительно не имеет состояния, почему он обращается к сеансу?
🙂
Ответ №2:
Если вы работаете с этим без состояния, смотрите о настройке tomcat, чтобы не создавать сеанс по умолчанию.
Также, если вы используете JSP, убедитесь, что он настроен на то, чтобы не создавать сеанс.
Комментарии:
1. я уверен, что он не имеет состояния, потому что я не получаю никаких данных из сеанса, а мой сервлет расширяется с HttpServlet. Однако вы поднимаете интересную область, где мне нужно настроить tomcat так, чтобы он не создавал сеанс. (я считаю само собой разумеющимся, что tomcat не будет создавать сеанс, если это не требуется)
2. Я думаю, что вы можете видеть / может / быть поведение по умолчанию, когда сеанс создается независимо. Таким образом, я думаю, вы можете настроить tomcat так, чтобы он не создавал сеансы по умолчанию, и они должны быть явно запрошены.