Есть ли риск совместного использования сервера приложений (tomcat) между более чем веб-приложениями

Я хочу использовать более одной копии аналогичного приложения в общем коте и хочу увеличить размер памяти, так есть ли риск этого действия?? Как я могу увеличить производительность?

Переключение сеансов, безопасность, целостность, проблемы с производительностью, риск потоков, взаимоблокировки


person Ahmad Al-Kurdi    schedule 04.06.2015    source источник
comment
Зачем тебе это? Это очень компактный контейнер сервлетов, и вы легко сможете запускать несколько экземпляров. Существует множество различных проблем, с которыми вы можете столкнуться при развертывании нескольких приложений на одном сервере. Если одно приложение крашит jvm, то все остальные приложения падают. Если вам нужно перезагрузить сервер, все приложения будут иметь время простоя. Общее правило — один сервер для каждого приложения.   -  person jorgen.ringen    schedule 05.06.2015


Ответы (2)


На самом деле может быть только влияние на производительность. Если вы не разделяете свой пул потоков между разными приложениями (вы можете сделать это в tomcat), вы не должны подвергаться рискам потоков/взаимоблокировок.

Но под влиянием производительности — я имею в виду сравнение с запуском приложений на разных серверах. Нет существенной разницы в производительности между запуском нескольких приложений на одном коте или запуском нескольких котов с поющими приложениями на борту.

НО: есть как минимум несколько ограничений:

  • вы не можете использовать разные версии разделяемых библиотек. Если вы посмотрите на папку ./lib в tomcat — там есть такие библиотеки, как jsp-api, servlet-api, jasper. Если ваши приложения ограничены использованием разных конкретных версий — это может быть проблемой (ее тоже можно решить, но это ограничение дополнения).
  • чтобы перезагрузить/обновить одно приложение, в некоторых случаях вам нужно перезагрузить кота, поэтому вам нужно остановить/запустить все приложения, размещенные на этом коте.

Одно из преимуществ запуска нескольких приложений в одном коте — вы можете сэкономить немного оперативной памяти. Пример: если несколько ваших приложений используют одну и ту же библиотеку — вы можете переместить ее в папку ./lib, тогда эта библиотека подхватится в памяти только один раз (а не по одному разу для каждого приложения).

P.S. Веб-приложения можно размещать разными способами, лично я предпочитаю две концепции: множество микросервисов со встроенным веб-сервером (tomcat/jetty) в случае использования архитектуры SOA/микросервиса или размещение нескольких приложений на одном коте другими способами.

person iMysak    schedule 04.06.2015

Переключение сеансов: - Без последствий

Безопасность: - Нет влияния

Целостность: - Нет воздействия

Проблема с производительностью: Да, это повлияет, так как один веб-сервер должен обрабатывать все запросы. Я смотрю на это таким образом, что процессорный цикл передается одному коту против двух отдельных котов. Кроме того, каждому приложению потребуется некоторый объем памяти, поэтому вам также необходимо настроить параметры памяти. См. несколько приложений в одном Tomcat и несколько экземпляров tomcat< /а>

Риск темы: - Без последствий

Тупики: - Нет воздействия

person M Sach    schedule 04.06.2015
comment
Нет риска резьбы? Что, если одно приложение захватит все потоки приема? - person Michael; 04.06.2015
comment
Безопасность. Отражение инициировало дампы кучи? - person Michael; 04.06.2015
comment
Что, если одно приложение захватит все потоки приема? Это повлияет на производительность. не так ли? - person M Sach; 04.06.2015
comment
Это зависит от вашего определения производительности. Взаимная блокировка приложения в одном приложении может по существу использовать все принимаемые потоки, запрещая доступ к другому... - person Michael; 04.06.2015