У моего сайта начались проблемы с падением пула приложений при использовании диспетчера служб отчетов. Это происходит при более чем одной установке. Я выделил веб-сайты Reports и ReportServer в их собственный пул приложений, чтобы выделить проблему, и локализовал проблему в ReportServer, поскольку это единственный пул приложений, который дает сбой.
Это началось в то время, когда мы реализовали API ReportingServices2005. Ниже приведен пример вызова, который мы используем для получения списка отчетов в папке SSRS.
В настоящее время наше приложение использует javascript (Jquery) для выполнения ajax-вызовов функции C # .NET, которая выполняет вызов API SSRS.
Кажется, что это происходит случайно, поскольку пул приложений не падает в течение нескольких дней или падает в течение нескольких часов после перезапуска. При возникновении этой ошибки пул приложений отклоняет все будущие подключения, однако пользовательский интерфейс IIS не показывает, что пул приложений остановлен. Журнал httperr показывает, что пул приложений был отключен из-за быстрой защиты от сбоев. Когда защита от быстрого отказа отключена, происходит сбой, и пул приложений сбрасывает все соединения.
Мы просмотрели все журналы из пула приложений, а также служб отчетов. Мы также добавили инструмент диагностики отладки в IIS для получения файла дампа с сервера. Ничего очевидного не выпрыгнуло на нас, и теперь мы в растерянности.
Пример вызова API служб Reporting Services:
[WebMethod(EnableSession = false)]
[ScriptMethod]
public List<CatalogItem> GetReportList()
{
CatalogItem[] items = null;
List<CatalogItem> ret = new List<CatalogItem>();
try
{
ReportingService2005 rs = new ReportingService2005();
rs.Url = ConfigurationManager.AppSettings["Reporting_Services_Url"];
rs.Credentials = System.Net.CredentialCache.DefaultCredentials;
// Use the reports path in the app config
string path = ConfigurationManager.AppSettings["ReportServer_ReportList_Path"];
if (path == null || path == "") path = "/"; // send in at least a base root "/"
items = rs.ListChildren(path, true);
foreach (CatalogItem item in items)
{
if (item.Type == ItemTypeEnum.Folder || item.Type == ItemTypeEnum.Report)
{
if (item.Name != "Search Reports" && item.Name != "My Reports" && item.Name != "Users Folders" && item.Name != "Data Sources")
ret.Add(item);
}
}
}
catch (System.Exception ex)
{
Guid? guid = ExceptionPolicy.HandledException(ex);
// json object to include the guid as well as the exception info, for UI retrieval
string jsonErrData = AjaxErrorHandling.CreateJsonFormat(guid, ex.Message, ex.GetType().ToString());
throw new Exception(jsonErrData);
}
return ret;
}
Предупреждение журнала дампа:
Следующие потоки в Crash_Rule_Targets_ Дата _11_03_2010__Time_09_16_14AM_ w3wp.exe _ReportServer_ PID _5256_ 371 _Дополнительные данные в режиме ожидания быть возвращенным с другого сервера через WinSock
Вызов WinSock исходил из 0x02a6a1c3 и предназначен для порта 80 по IP-адресу 127.0.0.1
(62) 1,12% заблокированных тем
Убедитесь, что любой удаленный сервер, который может вызывать это приложение, работает нормально, и между двумя серверами нет проблем с сетью. Если проблема не устранена, обратитесь к поставщику приложения за дополнительной помощью
Нить дампа в вопросе :
Тема 62 - Системный идентификатор 3024
Точка входа mscorwks! Thread :: middleThreadProc
Время создания 02.11.2010 19:21:00
Время, проведенное в режиме пользователя 0 дней 00: 00: 00.734
Время, проведенное в режиме ядра 0 дней 00: 00: 00.156
Этот поток ожидает данных, которые будут возвращены с другого сервера через WinSock.
Вызов WinSock исходил из 0x02a6a1c3 и предназначен для порта 80 с IP-адресом 127.0.0.1
WinDbg Дамп доступа в потоке 62 ОС Идентификатор потока: 0xbd0 (62) ESP EIP
2b13edb0 7c82860c [NDirectMethodFrameStandalone: 2b13edb0]
System.Net.UnsafeNclNativeMethods + OSSOCK.recv (IntPtr, Byte *, Int32,
System.Net.Sockets.SocketFlags) 2b13edc8 7a581b04
System.Net.Sockets.Socket.Receive (Byte [], Int32, Int32,
System.Net.Sockets.SocketFlags, System.Net.Sockets.SocketError ByRef)
2b13ee00 7a581a00 System.Net.Sockets.Socket.Receive (Byte [], Int32,
Int32, System.Net.Sockets.SocketFlags) 2b13ee20 7a58b854
System.Net.Sockets.NetworkStream.Read (Byte [], Int32, Int32) 2b13ee50
7a58b7bb System.Net.PooledStream.Read (Byte [], Int32, Int32) 2b13ee6c
7a58b4aa System.Net.Connection.SyncRead (System.Net.HttpWebRequest,
Boolean, Boolean) 2b13eec0 7a58b30a
System.Net.Connection.PollAndRead (System.Net.HttpWebRequest, Boolean)
2b13eed8 7a58b29b System.Net.ConnectStream.PollAndRead (Boolean)
2b13eee4 7a58b132 System.Net.HttpWebRequest.EndWriteHeaders (Boolean)
2b13ef10 7a58b056
System.Net.HttpWebRequest.WriteHeadersCallback (System.Net.WebExceptionStatus,
System.Net.ConnectStream, Boolean) 2b13ef24 7a58ac11
System.Net.ConnectStream.WriteHeaders (Boolean) 2b13ef78 7a588f82
System.Net.HttpWebRequest.EndSubmitRequest () 2b13efa4 7a588e9f
System.Net.HttpWebRequest.SetRequestSubmitDone (System.Net.ConnectStream)2b13efb8 7a5888c2 System.Net.Connection.CompleteStartRequest (Boolean,
System.Net.HttpWebRequest, System.Net.TriState) 2b13efe8 7a588233
System.Net.Connection.SubmitRequest (System.Net.HttpWebRequest)
2b13f02c 7a587bac
System.Net.ServicePoint.SubmitRequest (System.Net.HttpWebRequest,
System.String) 2b13f064 7a587479
System.Net.HttpWebRequest.SubmitRequest (System.Net.ServicePoint)
2b13f090 7aaaa4d4 System.Net.HttpWebRequest.GetResponse () 2b13f0d0
65dda7e5
System.Web.Services.Protocols.WebClientProtocol.GetWebResponse (System.Net.WebRequest)
2b13f100 65dde895
System.Web.Services.Protocols.HttpWebClientProtocol.GetWebResponse (System.Net.WebRequest)
2b13f104 2f51e76e
Microsoft.ReportingServices.UI.Global + RSWebServiceWrapper.GetWebResponse (System.Net.WebRequest)
2b13f114 65e09905
System.Web.Services.Protocols.SoapHttpClientProtocol.Invoke (System.String,
System.Object []) 2b13f158 2be6bd5c
Microsoft.SqlServer.ReportingServices2005.ReportingService2005.ListSecureMethods ()
2b13f164 2f51df12
Microsoft.SqlServer.ReportingServices2005.RSConnection.GetSecureMethods ()
2b13f19c 2f51de3a
Microsoft.ReportingServices.UI.Global + RSWebServiceWrapper.GetSecureMethods ()
2b13f1c4 2f51dd9b
Microsoft.SqlServer.ReportingServices2005.RSConnection.IsSecureMethod (System.String)
2b13f1dc 2f51dd13
Microsoft.SqlServer.ReportingServices2005.RSConnection.ValidateConnection ()
2b13f204 2f5197d2 Microsoft.ReportingServices.UI.Global.SecureAllAPI ()
2b13f20c 2f519720
Microsoft.ReportingServices.UI.ReportingPage.EnsureHttpsLevel (Microsoft.ReportingServices.Diagnostics.HttpsLevel)
2b13f218 2f5191e4
Microsoft.ReportingServices.UI.ReportingPage.ReportingPage_Init (System.Object,
System.EventArgs) 2b13f260 02a6b30d [MulticastFrame: 2b13f260]
System.EventHandler.Invoke (System.Object, System.EventArgs) 2b13f274
660ab484 System.Web.UI.Control.OnInit (System.EventArgs) 2b13f288
660a72ed System.Web.UI.Page.OnInit (System.EventArgs) 2b13f294 660ab5de
System.Web.UI.Control.InitRecursive (System.Web.UI.Control) 2b13f2b4
660a7a3b System.Web.UI.Page.ProcessRequestMain (Boolean, Boolean)
2b13f40c 660a7764 System.Web.UI.Page.ProcessRequest (Boolean, Boolean)
2b13f444 660a7691 System.Web.UI.Page.ProcessRequest () 2b13f47c
660a7626
System.Web.UI.Page.ProcessRequestWithNoAssert (System.Web.HttpContext)
2b13f488 660a7602
System.Web.UI.Page.ProcessRequest (System.Web.HttpContext) 2b13f49c
2f519105 ASP.pages_report_aspx.ProcessRequest (System.Web.HttpContext)
2b13f4a0 660adad6
System.Web.HttpApplication + CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute ()
2b13f4d4 6608132c
System.Web.HttpApplication.ExecuteStep (IExecutionStep, Boolean ByRef)
2b13f514 6608c5c3
System.Web.HttpApplication + ApplicationStepManager.ResumeSteps (System.Exception)
2b13f564 660808ac
System.Web.HttpApplication.System.Web.IHttpAsyncHandler.BeginProcessRequest (System.Web.HttpContext,
System.AsyncCallback, System.Object) 2b13f580 66083e1c
System.Web.HttpRuntime.ProcessRequestInternal (System.Web.HttpWorkerRequest)
2b13f5b4 66083ac3
System.Web.HttpRuntime.ProcessRequestNoDemand (System.Web.HttpWorkerRequest)
2b13f5c4 66082c5c
System.Web.Hosting.ISAPIRuntime.ProcessRequest (IntPtr, Int32) 2b13f7d8
79f9811e [ContextTransitionFrame: 2b13f7d8] 2b13f80c 79f9811e
[GCFrame: 2b13f80c] 2b13f968 79f9811e [ComMethodFrame: 2b13f968]