Среднее число одновременных пользователей на Tomcat - PullRequest
0 голосов
/ 28 ноября 2009

Я делаю стресс-тест с JMeter для веб-приложения (построено с использованием Spring, Struts2 REST, использует PostgreSQL).

Я моделирую сценарий типичного пользователя с моим приложением:

4 GET, 3 INSERT, 20 вызовов UPDATE.

Характеристики сервера:

4-ядерный Intel Xeon X5365 3GHz

8 ГБ ОЗУ

один диск SATA 320 ГБ

ОС: Ubuntu 8.10, 32-битная

БД: Postgresql 8,4

Tomcat 6.0.18

Java 1.6.0_14

Результаты показывают, что сервер будет обрабатывать около 130 одновременных транзакций. Возможно ли это число? Есть ли результаты онлайн для сравнения с моими?

1 Ответ

4 голосов
/ 29 ноября 2009

Узкое место будет в вашей базе данных, поэтому его очень трудно сравнить, не зная производительности вашей базы данных.

У нас есть аналогичная машина (за исключением 16 ГБ ОЗУ, на котором запущен Tomcat 5.5). При пиковой нагрузке он может легко обслуживать 256 одновременных соединений. Мы обсуждаем изменение maxThreads на 512.

Некоторые советы по настройке,

  1. Если вы запускаете Apache в качестве внешнего интерфейса, используйте mod_jk. Его производительность намного лучше, чем mod_proxy.
  2. Если вы обслуживаете HTTP напрямую или используете mod_proxy, используйте соединитель NIO в Tomcat 6.
  3. Убедитесь, что ваш пул потоков (maxThreads) достаточно большой, по умолчанию только 200.
  4. Сделать Tomcat без состояния. Особенно, не используйте HttpSession. Состояние может вызвать утечку памяти в приложении и постепенно ухудшать производительность. Отправьте все ваши данные в базу данных или клиенту (куки).
  5. Использовать пул баз данных (DBCP). У нас есть MySQL, драйвер JDBC очень болтлив.
  6. Если вы запустите один экземпляр JMeter, он может стать узким местом. Запуск нескольких подчиненных из разных сетей для имитации реальной производственной нагрузки.
...