Ошибка сервера Coldfusion - поврежденные данные формы: преждевременное завершение - PullRequest
0 голосов
/ 03 мая 2011

У меня проблема с нашим живым сервером. Иногда страница не загружается, и следующая ошибка отображается простым черным текстом на белом фоне:

 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) at coldfusion.filter.FormScope.fillMultipart (FormScope.java:190) at coldfusion.filter.FusionContext.SymTab_initForRequest (FusionContext.java:369) at coldfusion.filter.GlobalsFilter.invoke (GlobalsFilter.java:33) в coldfusion.filter.DatasourceFilter.invoke (DatasourceFilter.java:22) at coldfusion.filter.CachingFilter.invoke (CachingFilter.java:53) at coldfusion.filter.RequestThrottleFilter.invoke (RequestThrottleFilter.java:126) at coldfusion.CfmServlet.service (CfmServlet.java:200) at coldfusion.bootstrap.BootstrapServlet.service (BootstrapServlet.java:89) в jrun.servlet.FilterChain.doFilter (FilterChain.java:86) at coldfusion.monitor.event.MonitoringServletFilter.doFilter (MonitoringServletFilter.java:42) at 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 (JRunInvokerChain.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) at 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) в jrunx.scheduler.ThreadPool $ ThreadThrottle.invokeRunnable (ThreadPool.java:428) в jrunx.scheduler.ThreadPool $ UpstreamMetrics.invokeRunnable (ThreadPool.java:266) at 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.scheduler.ThreadPool $ DownstreamMetrics.invokeRunnable (ThreadPool.java:320)в jrunx.scheduler.ThreadPool $ ThreadThrottle.invokeRunnable (ThreadPool.java:428) в jrunx.scheduler.ThreadPool $ UpstreamMetrics.invokeRunnable (ThreadPool.java:266) at jrunx.scheduler.WorkerThread.run (WorkerThread.java:66)

Я действительно не знаю, что делать отсюда.

Если страница обновлена, она загружается без ошибок. Я не знаю, как воспроизвести ошибку, похоже, она не возникает ни на одной конкретной странице, ни в определенное время.

Я пробовал установить:

 Maximum number of simultaneous Template requests: 100

в администраторе Coldfusion я сделал это, основываясь на посте Стивена Эрата: http://www.talkingtree.com/blog/index.cfm/2005/3/11/ContextSwitchingBad

Но я все еще получаю ошибки. Поможет ли увеличение этого значения до более высокого значения?

И еще есть часть "преждевременного завершения формы" более длинной ошибки Java, я не уверен, что это связано, и не понимаю, что это значит.

Я также просматривал свои журналы доступа и исключал любые изображения или js-файлы, которые вызываются во время любых ошибок, у меня есть множество страниц CFM, которые возвращают статус http 503, и некоторые из это страницы CFM, которые возвращаются с типом содержимого Javascript и никогда не запрашиваются после публикации формы.

Итак, в итоге я получаю несколько довольно грубых сообщений об ошибках, и я могу воспроизвести их в настоящее время, и страница загружается нормально, если я просто нажму F5, и я хотел бы знать, может ли кто-нибудь помочь мне понять источник проблемы.

И, наконец, у нас запущен сервер RHEL 5 с CF9, и мы недавно обновились с CF7. До обновления этой ошибки не было.

Ответы [ 2 ]

2 голосов
/ 31 мая 2011

Мне очень жаль отвечать на этот вопрос самому, и я не совсем уверен, что это исправило.

Но я установил FusionReactor, что потребовало от меня обновления JVM, а затем перезагрузки coldfusion. С тех пор проблема не возникла.

Я получал его ежедневно, по крайней мере, ежечасно, но в часы пик пару раз в минуту. Теперь этого не произошло за 5 дней.

Мне бы хотелось услышать какие-нибудь мысли о том, почему что-то из этого могло бы это исправить?

1 голос
/ 03 мая 2011

Это всего лишь предположение из моего тестирования CF 9 для решения проблемы, с которой мы сталкиваемся, но это может быть просто объем ОЗУ, который у вас есть (и объем его использования).

Я обнаружил, что в CF 9, если вы достигнете предела памяти, он автоматически убьет ваш процесс JVM и перезапустит его, чтобы освободить всю вашу память. (у нас есть проблема с нашей более старой версией CF, которая просто ставит сервер на колени, если скорость разгона увеличена). У вас есть тестовая среда, в которой вы можете загрузить нагрузку на сервер и посмотреть, что произойдет, когда вы увеличите объем ОЗУ?

...