在過去的幾年中,我們在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