У меня проблема с нашим живым сервером. Иногда страница не загружается, и следующая ошибка отображается простым черным текстом на белом фоне:
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. До обновления этой ошибки не было.