Подтвердить что ты не робот

Подавать статический контент на веб-сервере и динамический контент в tomcat по-прежнему является хорошей практикой производительности?

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

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

4b9b3361

Ответ 1

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

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

...

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

alt text

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

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

...

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

...

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

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

Ответ 2

Вы не должны учитывать скорость, когда вы выбираете 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


Ресурсы:

Ответ 3

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

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

(Это просто мой собственный опыт, связанный с KISS)