2011-05-03 39 views
0

我的活服務器出現問題。偶爾頁面將不會加載,並顯示以下錯誤純黑色文本在白色背景上:Coldfusion服務器錯誤 - 損壞的表單數據:過早結束

Server Error 
The server encountered an internal error and was unable to complete your request 
Application server is busy. Either there are too many concurrent requests 

如果我使用下面的命令看在錯誤日誌網站,在錯誤的時間:

grep "12:17:33" error_log 

線,如該返回:

[Tue May 03 12:17:33 2011] [notice] jrApache[14352: 21512] returning error page for JRun too busy or out of memory 

然後,如果我在ColdFusion搜索cfserver.log我發現這些錯誤,手前幾秒:

05/03 12時17分29秒的錯誤損壞形式的數據:提前結束 java.io.IOException的:損壞形式的數據:提前結束 在com.oreilly.servlet.multipart.MultipartParser(MultipartParser.java:177 ) 在com.oreilly.servlet.multipart.MultipartParser(MultipartParser.java:99) 在coldfusion.filter.FormScope.fillMultipart(FormScope.java:190) 在coldfusion.filter.FusionContext.SymTab_initForRequest(FusionContext.java: 369) 在coldfusion.filter.GlobalsFilter.invoke(GlobalsFilter.java:33) 在coldfusion.filter.DatasourceFilter.invoke(DatasourceFilter.java:22) 在coldfusion.filter.CachingFilter.invoke(CachingFilter.java:53) 在coldfusion.filter.RequestThrottleFilter.invoke(RequestThrottleFilter.java:126) 在coldfusion.CfmServlet.service(CfmServlet.java:200) 在coldfusion.bootstrap.BootstrapServlet.service(BootstrapServlet.java:89) 在JRUN。 servlet.FilterChain.doFilter(FilterChain.java:86) 在coldfusion.monitor.event.MonitoringServletFilter.doFilter(MonitoringServletFilter.java:42) 在coldfusion.bootstrap.BootstrapFilter.doFilter(BootstrapFilter.java:46) 在JRUN。 servlet.FilterChain.doFilter(FilterChain.java:94) 在jrun.servlet.FilterChain.service(FilterChain.java:101) 在jrun.servlet.ServletInvoker.invoke(ServletInvoker.java:106) 在jrun.servlet。 JRunInvokerChain.invokeNext(JRunInvoke rChain.java:42) 在jrun.servlet.JRunRequestDispatcher.invoke(JRunRequestDispatcher.java:286) 在jrun.servlet.ServletEngineService.dispatch(ServletEngineService.java:543) 在jrun.servlet.jrpp.JRunProxyService.invokeRunnable( JRunProxyService.java:203) 在jrunx.scheduler.ThreadPool $ DownstreamMetrics.invokeRunnable(ThreadPool.java:320) 在jrunx.scheduler.ThreadPool $ ThreadThrottle.invokeRunnable(ThreadPool.java:428) 在jrunx.scheduler.ThreadPool $ UpstreamMetrics.invokeRunnable(ThreadPool.java:266) 在jrunx.scheduler.WorkerThread.run(WorkerThread.java:66)

05/03 12時17分29秒的錯誤(的JRun服務:ProxyService [jrun.servlet.jrpp .JRunProxyService @ 500b675])JRunPRoxyServer.invokeRunnable: java.lang.IllegalStateException 在jrun.servlet.JRunResponse.getWriter(JRunResponse.java:205) 在jrun.servlet.JRunResponse.sendError(JRunResponse.java:597) 在jrun.servlet .JRunRequestDispatcher.invoke(JRunRequestDispatcher.java:328) 在jrun.servlet.ServletEngineService.dispatch(ServletEngineService.java:543) 在jrun.servlet.jrpp.JRunProxyService.invokeRunnable(JRunProxyService.java:203) 在jrunx.scheduler .ThreadPool $ DownstreamMetrics.invokeRunnable(ThreadPool.java:320) at jrunx.scheduler。線程池$ ThreadThrottle.invokeRunnable(ThreadPool.java:428) 在jrunx.scheduler.ThreadPool $ UpstreamMetrics.invokeRunnable(ThreadPool.java:266) 在jrunx.scheduler.WorkerThread.run(WorkerThread.java:66)

java.lang.IllegalStateException 在jrun.servlet.JRunResponse.getWriter(JRunResponse.java:205) 在jrun.servlet.JRunResponse.sendError(JRunResponse.java:597) 在jrun.servlet.JRunRequestDispatcher.invoke(JRunRequestDispatcher.java :328) 在jrun.servlet.ServletEngineService.dispatch(ServletEngineService.java:543) 在jrun.servlet.jrpp.JRunProxyService.invokeRunnable(JRunProxyService.java:203) 在jrunx.sched (ThreadPool.java:266)在線程安裝目錄下,在線程安裝目錄下有一個安裝目錄,其中安裝了一個安裝目錄,安裝目錄下有一個安裝目錄, at jrunx.scheduler.WorkerThread.run(WorkerThread.java:66)

我真的不知道該從這裏做什麼。

如果頁面刷新,那麼它加載沒有錯誤。我不知道如何複製錯誤,它似乎不會發生在任何特定頁面或任何關鍵時刻。

我試過設置:

Maximum number of simultaneous Template requests: 100 
在ColdFusion管理員

,我已經根據史蒂芬ERAT的帖子做到這一點:http://www.talkingtree.com/blog/index.cfm/2005/3/11/ContextSwitchingBad

但我仍然得到錯誤。將這個值提高到更高值有幫助嗎?

再有就是在較長的Java錯誤的一部分「結束過早形式」,我不知道這是相關的,不明白這是什麼意思呢。

我也查看了我的訪問日誌,並排除了任何錯誤發生時調用的任何圖像或js文件,我有各種CFM頁面返回503 http狀態,還有一些其中的CFM頁面是以Javascript的內容類型返回的,並且在表單發佈之後永遠不會被請求。所以總而言之,我收到了一些非常直白的錯誤消息,我現在可以重現它們,並且如果我只是按F5就可以正常加載頁面,並且我想知道是否有人可以幫助我瞭解問題的根源。

哦,最後一兩件事,我們正在運行RHEL 5服務器CF9,我們已經從CF7最近升級。在升級之前,這個錯誤沒有發生。

+0

我今天安裝了FusionReactor,它要求我在同一時間安裝一個新的JRE,我也這樣做了。然後我不得不重啓coldfusion。 – 2011-05-25 16:34:02

+0

我從來沒有錯誤,但現在不知道這三件事中的哪一件解決了問題。我想象的不是重啓,就像我之前做過的那樣,雖然它可能只是暫時釋放了RAM?任何想法的人? – 2011-05-26 07:21:17

回答

2

我真的很抱歉自己回答,我不完全確定它是什麼修復它。

但我安裝了FusionReactor,它需要我更新我的JVM,然後重新啓動coldfusion。從那以後,問題沒有發生。

我每天都會得到它,至少每小時一次,但是在高峯時間每分鐘幾次。現在5天沒有發生。

我很想聽聽有關這些解決方案的原因嗎?

+0

這不是一個問題,至少你發佈的解決方案! – Limey 2011-05-31 21:19:07

+0

我最近卸載了FR,500個錯誤開始回來。重新安裝FR,他們又走了。我應該試着找出FR爲什麼要修復它。 – 2012-11-22 08:49:45

+0

當我運行使用adminapi創建400數據源的cfloop時,出現同樣的錯誤。 FR是否將任何參數添加到CF管理頁面中的JVM參數? – Seeker 2012-11-23 17:22:17

1

這只是從我的CF 9的測試猜測來解決我們有一個問題,但它可能只是你有RAM(和多少它正在使用時)的量。

我發現,在CF 9,如果你打你的內存限制,它會自動地殺死你的JVM進程,並重新啓動,以便所有的內存被釋放。 (我們的舊版CF存在問題,如果內存最大,服務器就會癱瘓)。你有一個測試環境,你可以在服務器上加載一個負載,看看當你最大化RAM時會發生什麼?

+0

我有一個本地測試服務器,它運行的是Ubuntu而不是RHEL5,它是CF9的開發者版本,但我會給它發一個 – 2011-05-03 12:43:06

+0

不要擔心它是開發版本。生產版本和開發版本完全一樣,只是有一些連接限制。要將它變成產品盒,您只需輸入一個有效的代碼,然後輸入wala!這是一個功能齊全的盒子! – Limey 2011-05-03 19:08:10

+0

如果它與您的生產系統不同的操作系統,那可能是一個問題,您可能不會遇到同樣的問題。 – Limey 2011-05-03 19:15:36