Конфигурация пула потоков JRun

Базовой вещью, которая позволяет LVM и Набегу программного обеспечения в работе Linux, является часть картопостроителя устройства ядра. Это - то, какие краткие обзоры адреса блока физических устройств к виртуальным блочным устройствам, которые Вы используете.

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

В сценарии Вы предлагаете в своем вопросе, доступность Ваших данных совпала бы с RAID0 где, если какие-либо сбои диска это приведет к потере данных.

На практике я не использовал бы LVM, не выполняя его на своего рода RAID. Я использовал LVM на файловом сервере на 30 ТБ, который имел приблизительно 20 Аппаратных средств объемы RAID5 в одном VG. Но если у Вас есть достаточно свободных Степеней, можно использовать pvmove для миграции данных от одного или нескольких, PV должен он начинать давать Вам проблемы.

Но всегда имейте стратегию резервного копирования на месте, которая время от времени тестируется.

1
задан 3 December 2009 в 22:19
2 ответа

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

Если Вы получаете java.lang. Исключения OutOfMemoryError в журнале ошибок JRun, ну, в общем, Вы вне памяти. Никакой upvote для этого, ;-). Вы не сказали, работали ли Вы 32-или 64-разрядный Windows, но Вы действительно говорили, что у Вас есть 8 ГБ RAM, так, чтобы оказал некоторое влияние на ответ. Выполняете ли Вы 32-, или 64-разрядная JVM (и что версия) также повлияет на вещи. Таким образом, это - несколько ответов, которые помогут нам добраться до сути относительно этого.

Независимо, Ваше приложение исчерпывает память. Это исчерпывает память по одному или нескольким из этих причин:

  1. Ваше приложение пропускает память. На некоторый объект, который использует Ваше приложение, постоянно ссылаются и поэтому никогда не имеющий право на сборку "мусора"; или хуже - на некоторый объект, созданный новый по каждому запросу, ссылается другой объект навсегда и поэтому, никогда не имеющий право на сборку "мусора". Корректная обработка сессии J2EE может быть особенно хитрой в этом отношении.
  2. Объем необходимой памяти для обрабатывания каждого параллельного запроса (на настроенном параллельном уровне запроса) превышает объем памяти, доступный в "куче" JVM. Например, у Вас есть размер "кучи" 1 ГБ, и каждый запрос может использовать до 10 МБ. Ваш сервер приложений настраивается для разрешения 150 параллельных запросов. (Упрощенные числа, я знаю). В этом случае у Вас определенно закончилась бы память при испытании 100 или больше параллельных запросов при загрузке (если каждый запрос использовал максимальный объем памяти, необходимый для обрабатывания запроса).

Другие вещи иметь в виду: в 32-разрядном Windows 32-разрядная JVM может только выделить приблизительно 1,4 ГБ памяти. Я не вспоминаю первое, что пришло на ум, если 32-разрядная JVM в 64-разрядном Windows имеет ограничение меньше, чем теоретические 4 ГБ макс. для какого-либо 32-разрядного процесса.

ОБНОВЛЕННЫЙ

Я считал сообщение в блоге, связанное через TalkingTree и другое сообщение, связанное в рамках того сообщения также. Я не столкнулся с этим точным случаем, но у меня действительно было следующее наблюдение: метрический вход JRUN не может записать "макс. значения", Вы процитировали в период пикового использования потока. Я думаю, что это регистрирует метрики в фиксированном, повторяющемся интервале. Это хорошо для показа, что Вы сглаживаете, средние рабочие характеристики Вашего приложения, но оно не может получить состояние JRUN прямо, прежде чем Ваше состояние ошибки начнет происходить.

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

Ваши опции, кажется, следующим образом:

  1. Уменьшите объем памяти Ваше использование приложения в каждом запросе, или -
  2. Экспериментально уменьшите значение настраивающих параметров потока в конфигурации JRUN, чтобы заставить больше потоков стоять в очереди для обработки вместо того, чтобы стать выполнимыми одновременно, или -
  3. Сократите количество одновременных запросов в администраторе ColdFusion (Страница Request Tuning, поле "Maximum number of simultaneous Template requests")

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

3
ответ дан 3 December 2019 в 19:54
  • 1
    Оба из Ваших ответов привели меня в том, что, кажется, правильный путь. We' ve в значительной степени сузил его к недостаточно памяти на самом стеке. Похож нет никакого пространства, уехал в другой поток на стеке даже при том, что существует много на "куче". Это объяснило бы почему это doesn' t восстанавливаются с ошибки. Мы будем играть вокруг с нашим jvm.config и оптимизировать настройки JVM. Экспериментирование является способом пойти, как Вы сказали. К сожалению, я won' t имеют время для тестирования этого, прежде чем щедрость истечет так I' ll принимают Ваш ответ на данный момент и отправят результаты, после того как мы заставляем время тестировать Ваши решения. –  jfrobishow 10 December 2009 в 00:14
  • 2
    Long после, наконец обновление. Сокращение размера запроса - то, что зафиксировало его :). Мы закончили тем, что понизились, размер "кучи" так или иначе вызывают наше приложение, не потребовал всего этого. Конюшня некоторое время теперь, никакие проблемы.Спасибо, ребята! –  jfrobishow 5 July 2010 в 21:03
  • 3
    Glad Вы нашли идеальную комбинацию настроенных параметров, которые работали на Вас. –  Clint Miller 6 July 2010 в 17:04

Попытайтесь уменьшить максимальный размер "кучи". Каждый поток требует собственных ресурсов (наряду с Java собственный материал). Применимый виртуальный AS составляет 2 ГБ; 1.2 ГБ резервируются для "кучи". Часть остающихся 800 МБ используется для кода (сегменты текста Java, и все потребовали DLLs), затем существуют собственные выделения, требуемые JRE и его зависимостями... и потоками: поскольку каждый поток на 1 МБ по умолчанию AS резервируется (хотя просто страница на самом деле фиксируется), 100 потоков = 100 МБ (только для стеков). Теперь добавьте немного дополнительное пространство между различными частями, некоторой фрагментацией... OOM ;-)

0
ответ дан 3 December 2019 в 19:54

Теги

Похожие вопросы