один высокопроизводительный сервер с одним сервером приложений или несколькими серверами приложений? - PullRequest
3 голосов
/ 30 марта 2010

Если у меня высококлассный сервер, например, с 1T памяти и 8x4core CPU ...

принесет больше производительности, если я запусту несколько серверов приложений (на разных JVM), а не только одно приложениеСервер?

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

btw, у java 64bit больше нет ограничений памяти?http://java.sun.com/products/hotspot/whitepaper.html#64

Ответы [ 3 ]

3 голосов
/ 30 марта 2010

принесет ли мне больше производительности, если я запусту несколько серверов приложений (на разных JVM), а не только один сервер приложений?

Есть несколько вещей, которые необходимо учитывать:

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

  • Большая куча занимает больше времени для заполнения, поэтому приложение работает дольше, прежде чем происходит сборка мусора. Тем не менее, большая куча также занимает больше времени для сжатия и заставляет сборку мусора занимать больше времени. Определение размера виртуальной машины обычно означает поиск хорошего компромисса между частотой и продолжительностью (другими словами, вы не всегда хотите выделять как можно больше ОЗУ одной виртуальной машине)

Итак, по моему опыту, запуск нескольких машин с несколькими JVM является обычным выбором (обычно он дешевле, чем у огромного зверя, и дает вам большую гибкость).

1 голос
/ 30 марта 2010

Скорее всего, вы получите, запустив несколько JVM с меньшими кучами вместо одной большой JVM. Для этого есть несколько причин:

  1. Меньшие кучи означают более короткий мусор сборы

  2. Больше JVM означает меньшую конкуренцию за внутренние ресурсы внутри JVM, такие как пулы потоков и другой синхронизированный доступ.

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

Но есть еще одно соображение. Лучше иметь несколько физических машин , чем одну большую жирную коробку. Это надежность. Если по какой-либо причине этот блок отключится, он заберет все серверы приложений, которые на нем работают. Инфраструктура, на которой работает множество отдельных небольших физических машин, будет меньше подвержена отказу одной машины по сравнению с одной коробкой.

1 голос
/ 30 марта 2010

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

В качестве базового практического правила дизайн JVM позволяет использовать любое количество процессоров и любой объем оперативной памяти, предоставляемый операционной системой. Фактические ограничения зависят от реализации JVM, и вам нужно очень внимательно прочитать спецификации, прежде чем выбирать, есть ли какие-либо ограничения, относящиеся к вам.

Если у вас есть JVM, которая может использовать аппаратное обеспечение, вам потребуется сервер приложений, который может масштабироваться соответствующим образом. Распространенным узким местом в наши дни является количество веб-запросов, которое может обрабатываться в секунду - современный сервер должен иметь возможность обрабатывать 10000 запросов в секунду (см. http://www.kegel.com/c10k.html), но не все это делают.

Итак, прежде всего определите ваши наиболее насущные потребности (количество соединений в секунду? Использование памяти? Пропускная способность сети) и используйте это для определения наилучшей комбинации платформы + jvm + сервер приложений. Если у вас есть конкретные потребности, продавцы, как правило, будут рады помочь вам сделать продажу.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...