ColdFusion: рекурсия слишком глубокая; стек переполнен

StackOverflow https://stackoverflow.com/questions/3637066

Вопрос

В течение последних нескольких лет мы случайно увидели это сообщение в выходных журналах при запуске запланированных задач в ColdFusion:

Рекурсия слишком глубокая; стек переполнен.

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

Он даже имеет пустую Application.cfm / CFC, чтобы заблокировать любой другой код, называемый.

Единственное другое время, которое мы видим, это когда мы перезапускаем CF, и мы пытаемся просмотреть страницу до полного начала службы.

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

Использование памяти в порядке. Задача, которая работала как раз перед ней более 80% свободной памяти. Мониторинг памяти через ночь не показывает никаких необычных шипов. Машина имеет 4 концерта памяти, и на нем ничего не работает, кроме ОС и ср. Недавно мы пытались переустановить CF, чтобы решить проблему, но это не помогло. Это происходит на нескольких других других серверах.

Это внутренний сервер, поэтому использование в 3 утра должно быть несуществующим. В то время нет других запланированных задач.

Мы видим это на наших коробках CF7, CF8 и CF9 (полностью исправлено).

Текущее поле в вопросе Информация:

  • CF версия: 9,0,1,274733
  • Издание: Предприятие
  • OS: Windows 2003 Server
  • Java версия: 1.6.0_17
  • Мин JVM Heap: 1024
  • Макс JVM Heap: 1024
  • Мин Пермский Размер: 64 м
  • Макс Пермский Размер: 384 м
  • Память сервера: 4 ГБ
  • Quad Core Machine, которая редко видит более 5% использования ЦП

Настройки JVM:

-server -dsun.io.usecanoncaches = false -xx: permsize = 64m -xx: maxpermsize = 384m -xx: + useparallelgc -xx: + AggressiveHeap -dcoldfusion.rootdir = {application.home} /../ -dcoldfusion.libpath = {application.home} /../ lib-ustoracle.jdbc.v8compatible = true

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

<cfquery datasource="common_app">
    update  import_counters
    set current_count = 0
</cfquery>

<cfmail subject="Counters reset" to="my@email.com" from="my@email.com"></cfmail>

Если я пропустил что-нибудь, дайте мне знать. Спасибо!

Это было полезно?

Решение

У нас был этот вопрос некоторое время после того, как наш сервер был обновлен до ColdFusion 9. Исправление, кажется, в этой технике от Adobe на Jrun 4: http://kb2.adobe.com/cps/950/950218dc.html.

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

Другие советы

Вы пытались уменьшить размер вашей кучи от 1024, чтобы сказать 800 что-то. Вы говорите, что есть более 80% оставленных на память, поэтому, если возможно, я бы посмотрел на уменьшение максимума.

Это 32 или 64 бита ОС? При назначении пространства кучи необходимо учитывать все накладные расходы JVM (стек, библиотеки и т. Д.), Чтобы вы не переходите на ограничение ОС для процесса.

То, что вы можете попробовать, это установить минимальный размер кучи JVM для того же, что и ваш максимальный размер кучи JVM (MB) в вашем администратере CF.

Также обновите JVM до последнего (21) или не менее 20.

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top