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

Запуск Tomcat в производственных средах

В настоящее время я использую Tomcat6 как Web-контейнер для разработки и производства.

Я слышал, что Tomcat - не лучший веб-контейнер для производственных сред. Это правда?

Достаточно ли Tomcat с точки зрения производительности и управления памятью для использования в производственных средах?

В нашей системе есть около 100-400 пользователей.

Для меня больше о том, как было написано Web-приложение, и о типе операций внутри веб-приложения.

Даже если производительность является проблемой для одного экземпляра Tomcat, можно ли кластер Tomcat?

Спасибо.

4b9b3361

Ответ 1

В настоящее время я использую Tomcat6 в качестве веб-контейнера для разработки и производства.

Я слышал, что Tomcat - не лучший веб-контейнер для производственных сред. Это правда?

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

Конечно, вы не должны сравнивать производительность Tomcat с готовыми веб-контейнерами. Tomcat может быть настроен на гораздо более высокую производительность, чем в состоянии "из коробки". Вы можете google: "tomcat production", например, и посмотреть, как люди управляют им в реальном производстве и получают множество советов, советов и т.д.

Является ли Tomcat достаточным с точки зрения производительности и управления памятью для использования в производственных средах?

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

В нашей системе есть около 100-400 пользователей.

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

Для меня больше о том, как было написано Web-приложение, и о типе операций внутри веб-приложения.

Половина правды.

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

Например, проблемы могут возникать из:

  • в кэшировании памяти в нескольких экземплярах JVM
  • хранилище сеансов (память, база данных, хранилище файлов) и его репликация

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

Даже если производительность является проблемой на одном экземпляре Tomcat, возможно ли сгруппировать Tomcat?

Да, можно кластер Tomcat. Способ разработки вашего приложения определяет, будет ли ваше приложение легко готово для кластеризации или будет сложнее сгруппировать. Эта проблема может быть не характерна для Tomcat, но для серверов приложений в целом.

Некоторые проблемы, которые вам могут потребоваться:

  • какие данные вы храните в (HTTP) сеансе
  • где хранить сеанс
  • сохранить сеанс
  • использовать балансировку нагрузки на веб-сервер при обратном прокси-сервере, например. Apache Web Server + mod_proxy/mod_jk, nginx, Larnish
  • которые используют соединители Tomcat (блокировка IO, NIO, APR)

Есть и другие проблемы, но я думаю, что вы можете начать с.

Ответ 2

100-400 пользователь - относительное небольшое развертывание. Я помог клиентам в развертывании решения Tomcat с гораздо большей зарегистрированной базой пользователей (в диапазоне миллионов) или одновременными пользователями. Я даже не считаю, что кластер необходим для вашего развертывания.

Для кластерного сервера Tomcat довольно просто. Помещение балансировки нагрузки перед серверами Tomcat. Настройте балансировщик нагрузки с липкостью сеанса. И у вас будет очень хороший кластер Tomcat. Некоторым клиентам требуется сбой при сбое в случае сбоя одного экземпляра Tomcat, и пользователь может автоматически маршрутизировать второй экземпляр без потери данных сеанса. Я считаю, что это больше, чем убийство для вашего развертывания. В действительности, время простоя, вызванное регулярным обслуживанием, будет намного выше, чем сбой системы. У меня есть серверы Tomcat, работающие в течение нескольких месяцев, и вам нужно всего лишь сбить основные выпуски кода. Но в случае, если это необходимо, есть пакет с открытым исходным кодом, поддерживающий кластеризацию сеансов.

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

Ответ 3

Вы правы, сначала подумайте о функциональности, а затем о производительности. Даже один экземпляр Tomcat будет достаточно хорош, чем количество пользователей. И, да, кластеризация Tomcat возможна.

Ответ 4

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

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

Что касается производительности Tomcat, я бы не стал беспокоиться об этом, беспокоиться о вашем коде как о том, где находится 90% узких мест.