Улучшение Performace для приложения Struts2 (веб-сайт) с высоким трафиком - PullRequest
2 голосов
/ 24 июня 2011

Я хотел спросить, что я должен иметь в виду, чтобы создать высокопроизводительное веб-приложение на базе STRUTS2.Гарантируется, что сайт будет иметь высокий трафик (т.е. допустим, что около 500 000 запросов в день).Также будет довольно много обращений к базе данных.

Пожалуйста, прокомментируйте, как я решил использовать следующие фреймворки (или предложите какие-нибудь лучшие альтернативы):

  1. Struts2 + springs и hibernate
  2. Jsp + jquery для представлений
  3. DWR для вызовов ajax

Пожалуйста, предложите несколько стратегий настройки / улучшения производительности.Спасибо!

Ответы [ 3 ]

7 голосов
/ 24 июня 2011

Пара вещей, которые вы можете сделать.

Первое:

Самым большим узким местом на сайте всегда является соединение с базой данных.Вам нужно будет убедиться, что ваша база данных работает в отдельном кластере, и пытаться делать больше в каждом сеансе базы данных при использовании hibernate.Чем меньше соединений с БД вы открываете / закрываете, тем быстрее будет работать ваше приложение.

Максимально используйте hibernate, поскольку он имеет логику для кэширования запросов и тому подобного.Также, если у вас есть одна и та же информация, используемая в сеансе пользователя, поместите ее в объект сеанса, чтобы вам не приходилось запрашивать в БД эту информацию несколько раз.

Секунда:

Максимально используйте Spring IOC.Вы должны создать «сервисные» классы, которые будут выполнять запросы к вашей базе данных, и эти классы должны быть созданы как одиночные и внедрены в конструктор или установщик через Spring IOC.

Третий:

Использоватьинструмент, такой как плитка или калитка.Это позволит вам создавать макеты для ваших JSP.

Четвертый:

Если у вас есть данные, отображаемые на странице, для загрузки / запроса которой требуется много времени, продолжайте и загружайте страницу с другими быстрыми данными, а затем загружайте медленныеданные динамически через AJAX.Это создаст у пользователя впечатление, что он получает немедленный результат.

Конечно, на стороне сервера есть много других вещей.Возможно, вы захотите развернуть приложение на нескольких узлах и использовать балансировщик нагрузки для маршрутизации трафика на наименее загруженный узел.Объем кэширования на прокси-сервере, сервере приложений, в браузере и базе данных, который вы делаете, также существенно повлияет на вашу производительность.

Надеюсь, это поможет!

2 голосов
/ 24 июня 2011

Поскольку вы используете hibernate, вам также следует изучить настройку производительности hibernate, для которой есть множество ресурсов, включая следующие обсуждения:

0 голосов
/ 24 июня 2011
  1. Избегайте узких мест в дизайне вашего приложения - см. эти советы от Yahoo .
  2. Запуск веб-сервера, сервера приложений и сервера базы данных на отдельных аппаратных кластерах.1007 * Если профиль недостаточно хорош, чтобы увидеть, что замедляет его;если в коде есть узкое место, исправьте его, в противном случае добавьте аппаратное обеспечение, пока оно не станет достаточно быстрым.
...