Что такое нормальное использование памяти для запроса в Coldfsuion - PullRequest
2 голосов
/ 06 апреля 2011

Глядя на серверный монитор Coldfusion, я вижу много запросов со средним объемом использования памяти от 100 КБ до 700 КБ. Это мне кажется высоким, не так ли?

Если он высокий, то это объясняет, почему сервер любит поглощать оперативную память и никогда не отпускать ее. Что было бы хорошим способом выяснить, почему использование памяти так высоко. Я не могу думать о том, чтобы использовать столько памяти. Есть ли хорошие способы отладки запросов Coldfusion?

Ответы [ 3 ]

2 голосов
/ 06 апреля 2011

Нам повезло с SeeFusion и простым использованием Jconsole на серверах для мониторинга памяти и потоков. Одна вещь, которую мы обнаружили, заключается в том, что в течение времени, в течение которого данные передаются для возврата пользователю, использование памяти было самым высоким. После того, как форма была отображена, память значительно упала. Убедитесь, что сборка мусора настроена правильно.

1 голос
/ 08 апреля 2011

Звучит как утечка памяти. Вы хотите создать дамп кучи JVM - снимок памяти JVM. Самый простой способ сделать это с jvisualvm. Затем проанализируйте этот снимок с помощью отчета об утечках в Eclipse Memory Analyzer . Марк Эшер имеет запись в блоге на эту тему .

Действия по настройке JVM-порта JVM для получения дампа кучи ColdFusion

  • Отредактируйте jvm.config и добавьте в java.args: -Dcom.sun.management.jmxremote.port = 3333 -Dcom.sun.management.jmxremote.ssl = false -Dcom.sun.management.jmxremote.authenticate = true
  • Копировать \ ColdFusion9 \ runtime \ jre \ lib \ management \ jmxremote.access.template -> jxmremote.access
  • Отредактируйте jxmremote.access, добавьте "controlRole changeIt" в конец файла, заменив "changeIt" на выбранный вами пароль
  • В проводнике Windows> jxmremote.access> Щелкните правой кнопкой мыши> Свойства> Безопасность> Дополнительно.
    • Владелец> Администраторы
    • Разрешения> Снимите флажок «Разрешить наследуемое ....»> Диалог Нажмите «Копировать»
    • Добавить «Администраторы» с полным доступом
    • Удалить все остальные записи разрешения
    • Нажмите "ОК"
  • Перезапустите ColdFusion

Создание дампа кучи

  • на ColdFusion box установите JDK
  • запустить jvisualvm из jdk-install-dir/bin/jvisualvm
  • открыть соединение JMX (например, localhost: 3333)
  • на вкладке «монитор» нажмите кнопку «Дамп кучи» и сохраните результат, щелкнув правой кнопкой мыши его узел
  • возьмите этот файл и откройте в Eclipse Memory Analyzer и запустите отчет об утечках
  • копайте его, используйте справку Eclipse, чтобы понять, как оценивать

Я использовал этот подход, чтобы обнаружить ряд утечек памяти в коде ColdFusion.

1 голос
/ 06 апреля 2011

Вы действительно получаете исключения «из памяти»? Или ошибки «вне стека»? Внимательно проверяйте логи, так как у меня был опыт перезапуска CF спонтанно раньше - проверьте файлы server.log.

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

Если нет исключений и т. Д., Имейте в виду, что JRun использует много памяти. Как правило, между 500 МБ и 1,5 ГБ на наших серверах Win32, даже если настройка CF Admin для размера кучи JVM составляет 1024 МБ. JRun и работает поверх Java, работает сервер приложений, так что это будет достаточно высоко. То, что вам нужно остерегаться - это постоянно растущее использование памяти с использованием JConsole.

Что касается настройки ГХ - используйте эти настройки, только если у вас действительно есть проблема. Это сложно и приведет к нестабильности сервера, если все сделано неправильно или без понимания того, как работает Java GC. Вы можете получить основы здесь , а затем передать параметры (например, -XX:MaxPermSize=192m) в качестве аргумента JVM в CF admin.

Достижение сути проблемы с памятью может быть сложным и трудоемким, поэтому удачи!

...