Подача статического контента на веб-сервер, а динамического контента в tomcat - это все еще хорошая практика производительности? - PullRequest
12 голосов
/ 09 сентября 2010

В старых версиях tomcat (например, 3.2) вы можете найти рекомендации по обслуживанию статического контента на веб-сервере apache и оставить динамический контент самому коту. В новых версиях tomcat docs вы не найдете ссылок на эту практику даже в учебнике по настройке mod_jk. Вот мне и интересно.

Правда ли, что tomcat недостаточно хорош для обслуживания статического контента? Если я изменю свою схему развертывания для разделения статического и динамического контента, у меня будет улучшение производительности?

Ответы [ 3 ]

9 голосов
/ 09 сентября 2010

Что касается чистой скорости, я предлагаю прочитать Миф или правда: всегда нужно использовать Apache httpd перед Apache Tomcat для улучшения производительности? сообщение в блоге.Позвольте мне процитировать это частично:

Короткий ответ: это миф.Более длинный ответ заключается в том, что еще во времена Tomcat 3 это зависело от обстоятельств.Однако для версий Tomcat, используемых сегодня (5.5.x и 6.0.x), нет необходимости использовать httpd исключительно из соображений производительности.Tomcat теперь поддерживает собственный / APR-коннектор, который использует ту же собственную библиотеку (Apache Portable Runtime-APR), что и httpd для низкоуровневого ввода-вывода, и поэтому может достигать производительности, аналогичной httpd.При работе со статическим контентом издержки при использовании Tomcat намного выше, чем при использовании httpd, но различия настолько малы, что вряд ли будут заметны в производственных системах.

...

The тестирование производительности , проведенное Кристофером Шульцем, постоянным участником списка рассылки пользователей Tomcat, использовало более широкий диапазон размеров файлов и, на мой взгляд, дает лучшие результаты.Результаты его испытаний показаны на графике ниже.

alt text

Эти результаты намного больше соответствуют ожидаемым, хотя есть несколько интересных моментов, на которые следует обратить внимание:

  • Apache httpd и Coyote APR / native показывают аналогичные уровни производительности.
  • Coyote NIO не слишком отстает от httpd и Coyote APR / native.
  • быть пределом полезности sendfile.Это может быть аппаратным ограничением, но заслуживает дальнейшего внимания.Я добавил это в свой список задач.
  • Для файлов небольшого размера (менее ~ 10 КБ) кэширование статических файлов в Tomcat обеспечивает значительное повышение производительности.

...

Хотя необработанная производительность для статического контента может не быть хорошей причиной для использования httpd, существует ряд веских причин, по которым вы можете захотеть использовать httpd с Tomcat.Наиболее частой причиной является распределение нагрузки для двух или более экземпляров Tomcat.httpd - не единственный вариант, так что можно использовать аппаратные балансировщики нагрузки или другие обратные прокси-серверы, но это популярный выбор среди системных администраторов, поскольку многие из них уже знакомы с httpd.Я напишу больше об использовании httpd в качестве балансировщика нагрузки в следующей статье.

...

Хорошо стоит прочитать.

Это, как говорится, использование веб-сервера перед Tomcat для обслуживания статического контента, очевидно, высвободит больше энергии для динамического контента и, таким образом, является моим любимым вариантом.

2 голосов
/ 09 сентября 2010

Вы не должны учитывать скорость при выборе между Apache httpd и Tomcat.

Что такое JK (или AJP)?

AJP являетсяпроводной протокол.Это оптимизированная версия протокола HTTP, позволяющая автономному веб-серверу, такому как Apache, общаться с Tomcat. Исторически , Apache намного быстрее, чем Tomcat, обслуживал статический контент.Идея состоит в том, чтобы Apache, когда это возможно, обслуживал статический контент, но передавал запрос в Tomcat на контент, связанный с Tomcat.

И

Скорость.Apache быстрее обслуживает статический контент, чем Tomcat.Но если у вас нет сайта с высоким трафиком, этот пункт бесполезен.Но в некоторых случаях tomcat может работать быстрее, чем Apache httpd.Итак, отметьте ВАШ сайт. Tomcat может работать со скоростью httpd при использовании соответствующего разъема (APR с включенным sendFile).Скорость не должна учитываться при выборе между Apache httpd и Tomcat


Ресурсы:

0 голосов
/ 08 октября 2010

Возможно, заголовок Cache-Control со значением max-age может быть добавлен фильтром сервлета в Tomcat для всего содержимого "/ static / *".И поэтому, если одни и те же клиенты возвращаются часто (Интранет), Tomcat может быть достаточно, поскольку статический контент будет в кеше браузера и редко запрашивается на сервере по сравнению с динамическим контентом.

Более того, Cache-Control для статического контента можетбыть хорошей идеей для расширенной пропускной способности сети.

(Это мой собственный опыт стремиться к KISS)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...