Я имею дело с системой, которая запускает приложение Java для каждого клиента в своей собственной JVM. У нас есть около полутора десятков выделенных серверов, которые теперь работают почти на 100 JVM, и наборы пользовательских сценариев для управления этими JVM. Эта настройка действительно показывает свой возраст на данный момент: управление тем, что многие JVM становятся кошмаром для мониторинга/управления, и мы постоянно занимаемся проблемами кучи. Мы хотели бы перейти к более современному подходу и просто запустить множество приложений на одном сервере приложений на физическую машину. Однако сохранение отдельных приложений имеет определенные преимущества с точки зрения изоляции (например, из-за ошибок памяти влияет только на одного клиента). Каждый стек программного обеспечения каждого пользователя имеет требования к памяти, которые сильно различаются.Несколько JVMs против сервера одного приложения
Мой вопрос: есть ли способ иметь лучшее из обоих миров здесь и запускать несколько приложений на одном JVM (сервере приложений) и поддерживать некоторый уровень изоляции? Или это просто современный жизненный факт, который вам нужно для управления требованиями к памяти набора приложений в наши дни? Существуют ли другие решения помимо сервера приложений или контейнера Java EE (например, Wildfly или Spring), которые я здесь отсутствует? Кажется, что эта система - это прорыв от другой эры!
Современный подход все чаще использует JVM для каждого приложения на виртуализированных хостах. Для масштаба, который вам нужен, я настоятельно рекомендую взглянуть на Cloud Foundry, чтобы отвлечь большую часть управления, о котором вы говорите. – chrylis
Как и комментарий chrylis, современный подход НЕ использовать серверы приложений. Многопользовательская аренда также мертва, потому что из-за этого возникает проблема, когда вы можете использовать виртуальные машины или контейнеры, такие как Docker, чтобы дать вам реальное разделение? – SteveD
Я думаю, что вы фокусируетесь на неправильной проблеме: почему у вас постоянно возникают проблемы с размером кучи? Являются ли ваши приложения утечкой памяти? У вас есть неограниченное потребление памяти? Не подходит ли ваше приложение к постоянному использованию памяти для данной рабочей нагрузки? – SteveD