2010-11-15 3 views
11

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

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

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

Наша система насчитывает от 100 до 400 пользователей.

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

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

Спасибо.

+2

Что вы подразумеваете под «кластеризацией»? Это термин с несколькими интерпретациями. – skaffman

+2

Этот вопрос будет более подходящим для ServerFault, поскольку речь идет о системном администраторе, а не о программировании (как я понимаю, по крайней мере). –

+0

Возможно, вам нужно изучить обратные прокси. Хотя tomcat достаточно хорош, но если вы хотите масштабировать свое приложение, тогда необходимо сбалансировать балансировку, несмотря на то, что вы используете – vinothkr

ответ

14

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

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

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

Конечно, вы не должны сравнивать производительность Tomcat с готовыми веб-контейнерами. Tomcat может быть настроен на гораздо более высокую производительность, чем в состоянии «из коробки». Вы можете Google: «TOMCAT производство», например, и посмотреть, как люди это удалось в реальном производстве и получить много советов, советов и т.д.

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

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

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

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

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

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

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

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

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

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

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

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

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

  • какие данные хранить в (HTTP) сессии
  • где хранить сессию
  • сохранить живую сессию
  • использование веб-сервера балансировки нагрузки приложений обратный прокси-сервер, например Веб-сервер Apache + mod_proxy/mod_jk, Nginx, лак
  • который Tomcat разъемы для использования (блокировка ввода-вывода, NiO, АПР)

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

3

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

1

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

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

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

+8

Tomcat ist _not_ просто веб-сервер. –

6

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

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

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

+1

Пользователь 100-400 в одной системе не может быть применим к другим системам, таким как развертывание. Это может быть «очень тяжелое» использование и может потребоваться кластеризация. Я бы доверял фактическим метрикам и статистике текущих производственных систем, а не правила большого пальца, применимого к некоторым другим развертываниям. –

Смежные вопросы