Отказы жесткого диска, намного более вероятно, произойдут в сервере, чем настольная рабочяя станция...
Вы не можете только сказать "добавление большего количества точек отказа", не принимая во внимание вероятность того отказа. Тем более, что эти менее вероятные точки отказа должны конкретно на месте ниспровергать более вероятный катастрофический отказ жесткого диска. Как Вы выразились, Вы в основном создали Пари Паскаля - как ошибка.
Большинство систем RAID на настольных материнских платах является гибридами программного обеспечения/аппаратных средств дешевки с большей частью работы, сделанной в ее программном драйвере. По моему скромному мнению, они - куски дерьма, используемого, чтобы продать продвинутым пользователям.
, С другой стороны, хорошие фактические аппаратные средства RAID довольно надежен, и он имеет аппаратные средства, чтобы сделать его вещь без (несмотря на?) операционная система. Но они становятся дорогими, потому что реальные аппаратные средства обычно имеют резервные аккумуляторы и полный массив XOR'ing для вычисления контрольных сумм, и т.д. Еще более дорогих, если они сделали использование SCSI.
Сводка: Если Вы выполняете основанные на материнской плате системы RAID, то не, это не стоит проблемы.
Как уже упомянуто, Вы, вероятно, испытываете протекающие загрузчики класса. По некоторым причинам Ваши классы не разгружаются. Это может произойти по двум причинам
Нет никакого всеобъемлющего решения этой проблемы. Один полезный инструмент, чтобы помочь Вам найти первопричину является Памятью Eclipse Инструмент Анализатора, который можно обратиться к дампу "кучи" от JVM (можно включить дампы "кучи" на OOMs с-XX: + опция HeapDumpOnOutOfMemoryError). Возможно, начните искать java.lang. Объекты класса из Вашего веб-приложения для наблюдения, почему они поддерживаются. К сожалению, PermGen обычно не является частью дампа "кучи" JVM, таким образом, можно только попытаться найти артефакты корреляции в остальной части "кучи" (Объекты класса не хранятся в PermGen, если я не ошибаюсь, только фактический код байта, исправьте меня, если я неправ хотя).
HTH.
Править:
Dave Cheney предлагает в комментарии это java.lang. Объекты класса являются действительно частью PermGen, и не включенные в нормальный дамп "кучи" горячей точки. Если у Вас нет JVM, которая пишет эту информацию в дампе "кучи", Вам будет нужен другой подход. Можно все еще искать экземпляры объектов, но если Вы пропускаете загрузчики классов/класса (они оба, к сожалению, подразумевают друг друга), кажется, что необходимо искать другие знаки (объекты метаданных от JBoss, и т.д.).
Первопричиной являются ссылки на классы, которые были отброшены, протекая вне их classloader, препятствуя тому, чтобы JVM разгрузила те классы от Генерала перманента. Те флаги, которые Вы используете, могут заставить JVM настойчиво производить чистку классов, которые являются незагружаемыми, но она не решит базовую проблему.
Существует польза, abeit сложное объяснение здесь
Причиной ошибки PermGen OutOfMemory является приложение, повторно развертывается. Первопричиной являются пропущенные Объекты класса в PermGen от повторно развертывания.
Конечно, обходное решение должно перезапустить JVM после того, как определенное число повторно развернется.
Это - очень трудная проблема для общего решения, хотя с некоторыми выслеживающими Вас может часто делать большие улучшения. Вот то, где Вы запускаете: Когда Ваше веб-приложение будет остановлено, удостоверьтесь что:
Это некоторые вещи, которые могут заставить Объект класса быть захваченным в PermGen.
Кроме того, обратите внимание, что не весь JVMs (или все версии JVMs) будут Объекты класса GC в PermGen. При выполнении JVM или версии JVM, которая не будет Объекты класса GC в PermGen, то единственный выбор состоит в том, чтобы перезапустить JVM после того, как определенное число повторно развертывается. Это, вероятно, не относится к Вам, учитывая опции JVM, которые Вы упоминаете.