在过去的几年中,我们在ColdFusion中运行计划任务时,随机在输出日志中看到此消息:ColdFusion:递归太深;堆栈溢出
递归太深;堆栈溢出。
被调用的任务内部的代码可能会有所不同,但在这种情况下,它非常简单,只需重置数据库中的计数器,然后向我发送一封电子邮件,告诉我它已成功。但我已经看到它与各种代码发生,所以我非常确定这不是导致此问题的代码。
它甚至有一个空的application.cfm/cfc来阻止任何其他被调用的代码。
我们唯一看到的是当我们重新启动CF时,我们试图在服务完全启动之前查看页面。
错误很少发生,但是现在我们有一些相当关键的计划任务,如果它们不运行就会导致问题。 (因此我在这里发布求助)
内存使用情况良好。在它报告超过80%空闲内存之前运行的任务。整夜监控内存不会显示任何非正常的峰值。该机器有4个内存的演出,没有其他任何运行,但操作系统和CF.我们最近试图重新安装CF来解决问题,但它没有帮助。它也发生在我们的其他几台服务器上。
这是一个内部服务器,所以在凌晨3点使用应该不存在。当时没有其他计划任务正在运行。我们已经在我们的CF7,CF8和CF9盒子上看到了这个(已完全修补)。
有关信息当前框:
- CF版本:9,0,1,274733
- 版:企业
- 操作系统:Windows 2003服务器
- Java版本:1.6 .0_17
- 最小JVM堆:1024
- 最大JVM堆:1024
- 敏彼尔姆大小:64M
- 最大烫发大小:384米
- 服务器内存:4GB
- 四核的机器,很少看到超过5%的CPU使用率
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 -Doracle.jdbc。V8Compatible =真
这是令人难以置信的复杂的代码无法运行昨晚,但已经运行了多年,并且将最有可能运行的明天:
<cfquery datasource="common_app">
update import_counters
set current_count = 0
</cfquery>
<cfmail subject="Counters reset" to="[email protected]" from="[email protected]"></cfmail>
如果我错过了什么让我知道。 谢谢!
你打电话的代码是什么? – 2010-09-03 15:27:57
就像我上面提到的那样,它是各种代码(所以我对此表示怀疑),但是我编辑了我的问题并将代码放在底部供您查看。谢谢! – BigWorld 2010-09-03 16:04:46
这起火灾的情况是什么?它是以一天一次的时间表还是每x分钟等等运行? – 2010-09-03 17:03:36