Как я могу установить процессор и ограничение памяти для процесса в Java? - PullRequest
2 голосов
/ 13 мая 2011

Привет Я хочу сделать сайт, используя сервер Java и Tomcat. На веб-сайте будет установлен процессор и лимит памяти для каждого пользователя для всего процесса на сервере. Например, для каждого пользователя% 3 ЦП и ограничение памяти 100 МБ.

Как я могу это сделать? Спасибо

Ответы [ 2 ]

1 голос
/ 14 мая 2011

Это невозможно с одним процессом Tomcat. Вам необходимо порождать несколько дочерних процессов, каждый из которых имеет свои собственные (-Xmx100m ИЛИ ОС-квота памяти) И ОС-специфические настройки для управления квотой ЦП.

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

0 голосов
/ 01 января 2012

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

Обратите внимание, что вы можете установить ограничение времени ожидания для вызова функции (используя Executor), и большинство операций будет прервано. Это может быть достаточно для вас. Если вам нужно больше, вам снова понадобится операционная система.

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