2013-10-04 3 views
0

Мы создали веб-сайт с использованием инфраструктуры WCSF и .NET 2.0.IIS 7 Неверное имя приложения: w3wp.exe

В настоящее время это приложение используется в прямом эфире и использует более 1000 пользователей. Мы развернули это в облаке в IIS 7 под Windows 2008 Server R2. Мы также используем базу данных Sql Server 2008 R2 для бэкэнд. Архитектура развертывания описана ниже.

Существует два веб-сервера, подключенных под балансировщиком нагрузки (аппаратное обеспечение) с использованием липких сеансов. Эти два сервера взаимодействуют с двумя серверами баз данных, где между ними разбросано более 600 баз данных. Все запросы сначала отправляются в базу данных администратора, которая перенаправляется на соответствующий сервер db.

Теперь к вопросу ....

Мы получаем около 4 до 5 w3wp аварий в день в обоих серверах. За это время все пользователи, подключенные к приложению, будут выведены из системы.

Faulting Имя приложения: w3wp.exe, версия: 7.5.7601.17514, время марка: 0x4ce7afa2 имя Faulting модуль: KERNELBASE.dll, версия: 6.1.7601.18229, штамп времени: 0x51fb1677 Код исключения: 0xe053534f Fault смещение : 0x000000000000940d Faulting идентификатор процесса: 0x% 10 Сбойное путь к приложению::% 11 Faulting модуль пути: 0x% 9 Сбойное приложений время запуска% 12 ID отчета:% 13

Недавно мы открыли дело с МС и их комментарии приводятся ниже.

--- Begin ответ Microsoft ---

Процесс разбился из-за переполнения стека проблемы.

.Net Call Stack:

System.Enum.System.IConvertible.ToInt64(System.IFormatProvider) 
System.Convert.ToInt64(System.Object, System.IFormatProvider) 
System.Enum.ToUInt64(System.Object) 
System.Enum.IsDefined(System.Type, System.Object) 
Microsoft.Practices.ObjectBuilder.Locator.Get(System.Object, Microsoft.Practices.ObjectBuilder.SearchMode) 
Microsoft.Practices.ObjectBuilder.ReadableLocator.Get[[System.__Canon, mscorlib]](System.Object) 
<Trimmed> 
Microsoft.Practices.ObjectBuilder.BuilderStrategy.BuildUp(Microsoft.Practices.ObjectBuilder.IBuilderContext, System.Type, System.Object, System.String) 
Microsoft.Practices.CompositeWeb.BuilderStrategies.ContainerAwareTypeMappingStrategy.BuildUp(Microsoft.Practices.ObjectBuilder.IBuilderContext, System.Type, System.Object, System.String) 
Microsoft.Practices.ObjectBuilder.BuilderStrategy.BuildUp(Microsoft.Practices.ObjectBuilder.IBuilderContext, System.Type, System.Object, System.String) 
Microsoft.Practices.CompositeWeb.BuilderStrategies.ContainerAwareTypeMappingStrategy.BuildUp(Microsoft.Practices.ObjectBuilder.IBuilderContext, System.Type, System.Object, System.String) 
Microsoft.Practices.ObjectBuilder.BuilderStrategy.BuildUp(Microsoft.Practices.ObjectBuilder.IBuilderContext, System.Type, System.Object, System.String) 
Microsoft.Practices.CompositeWeb.BuilderStrategies.ContainerAwareTypeMappingStrategy.BuildUp(Microsoft.Practices.ObjectBuilder.IBuilderContext, System.Type, System.Object, System.String) 
Microsoft.Practices.ObjectBuilder.BuilderStrategy.BuildUp(Microsoft.Practices.ObjectBuilder.IBuilderContext, System.Type, System.Object, System.String) 
Microsoft.Practices.CompositeWeb.BuilderStrategies.ContainerAwareTypeMappingStrategy.BuildUp(Microsoft.Practices.ObjectBuilder.IBuilderContext, System.Type, System.Object, System.String) 
Microsoft.Practices.ObjectBuilder.BuilderStrategy.BuildUp(Microsoft.Practices.ObjectBuilder.IBuilderContext, System.Type, System.Object, System.String) 
Microsoft.Practices.CompositeWeb.BuilderStrategies.ContainerAwareTypeMappingStrategy.BuildUp(Microsoft.Practices.ObjectBuilder.IBuilderContext, System.Type, System.Object, System.String) 
Microsoft.Practices.ObjectBuilder.BuilderStrategy.BuildUp(Microsoft.Practices.ObjectBuilder.IBuilderContext, System.Type, System.Object, System.String) 
Microsoft.Practices.CompositeWeb.BuilderStrategies.ContainerAwareTypeMappingStrategy.BuildUp(Microsoft.Practices.ObjectBuilder.IBuilderContext, System.Type, System.Object, System.String) 
Microsoft.Practices.ObjectBuilder.BuilderStrategy.BuildUp(Microsoft.Practices.ObjectBuilder.IBuilderContext, System.Type, System.Object, System.String) 
Microsoft.Practices.CompositeWeb.BuilderStrategies.ContainerAwareTypeMappingStrategy.BuildUp(Microsoft.Practices.ObjectBuilder.IBuilderContext, System.Type, System.Object, System.String) 
Microsoft.Practices.ObjectBuilder.BuilderStrategy.BuildUp(Microsoft.Practices.ObjectBuilder.IBuilderContext, System.Type, System.Object, System.String) 
Microsoft.Practices.CompositeWeb.BuilderStrategies.ContainerAwareTypeMappingStrategy.BuildUp(Microsoft.Practices.ObjectBuilder.IBuilderContext, System.Type, System.Object, System.String) 
Microsoft.Practices.ObjectBuilder.BuilderStrategy.BuildUp(Microsoft.Practices.ObjectBuilder.IBuilderContext, System.Type, System.Object, System.String) 
Microsoft.Practices.CompositeWeb.BuilderStrategies.ContainerAwareTypeMappingStrategy.BuildUp(Microsoft.Practices.ObjectBuilder.IBuilderContext, System.Type, System.Object, System.String) 
Microsoft.Practices.ObjectBuilder.BuilderStrategy.BuildUp(Microsoft.Practices.ObjectBuilder.IBuilderContext, System.Type, System.Object, System.String) 
Microsoft.Practices.CompositeWeb.BuilderStrategies.ContainerAwareTypeMappingStrategy.BuildUp(Microsoft.Practices.ObjectBuilder.IBuilderContext, System.Type, System.Object, System.String) 
Microsoft.Practices.ObjectBuilder.BuilderStrategy.BuildUp(Microsoft.Practices.ObjectBuilder.IBuilderContext, System.Type, System.Object, System.String) 
Microsoft.Practices.CompositeWeb.BuilderStrategies.ContainerAwareTypeMappingStrategy.BuildUp(Microsoft.Practices.ObjectBuilder.IBuilderContext, System.Type, System.Object, System.String) 

Полный Call Stack

Мы видим, что вызов производится по адресу: - ASP.xxxdashboards_recordlistview_aspx

ntdll!ZwTerminateProcess 
KERNELBASE!TerminateProcess+2f 
mscorwks!EEPolicy::HandleFatalStackOverflow+13b 
mscorwks!EEPolicy::HandleStackOverflow+212 
mscorwks!CLRVectoredExceptionHandler+3de1be 
mscorwks!CLRVectoredExceptionHandlerShim+42 
ntdll!RtlpCallVectoredHandlers+a8 
ntdll!RtlDispatchException+22 
ntdll!KiUserExceptionDispatch+2e 
KERNELBASE!RaiseException+39 
mscorwks!AllocateObject+34aeb1 
mscorwks!MethodTable::FastBox+43 
mscorwks!MethodTable::Box+5b 
mscorwks!ReflectionEnum::InternalGetEnumValue+139 
System.Enum.System.IConvertible.ToInt64(System.IFormatProvider)+b 
System.Convert.ToInt64(System.Object, System.IFormatProvider)+35 
System.Enum.ToUInt64(System.Object)+9d 
System.Enum.IsDefined(System.Type, System.Object)+ff 
Microsoft.Practices.ObjectBuilder.Locator.Get(System.Object, Microsoft.Practices.ObjectBuilder.SearchMode)+4d 
Microsoft.Practices.ObjectBuilder.ReadableLocator.Get[[System.__Canon, mscorlib]](System.Object)+10 
Microsoft.Practices.CompositeWeb.BuilderStrategies.SessionStateBindingStrategy.BuildUp(Microsoft.Practices.ObjectBuilder.IBuilderContext, System.Type, System.Object, System.String)+11f 
Microsoft.Practices.ObjectBuilder.BuilderStrategy.BuildUp(Microsoft.Practices.ObjectBuilder.IBuilderContext, System.Type, System.Object, System.String)+56 
Microsoft.Practices.CompositeWeb.BuilderStrategies.SessionStateBindingStrategy.BuildUp(Microsoft.Practices.ObjectBuilder.IBuilderContext, System.Type, System.Object, System.String)+2be 
Microsoft.Practices.ObjectBuilder.BuilderStrategy.BuildUp(Microsoft.Practices.ObjectBuilder.IBuilderContext, System.Type, System.Object, System.String)+56 
Microsoft.Practices.CompositeWeb.BuilderStrategies.SessionStateBindingStrategy.BuildUp(Microsoft.Practices.ObjectBuilder.IBuilderContext, System.Type, System.Object, System.String)+2be 
Microsoft.Practices.ObjectBuilder.BuilderStrategy.BuildUp(Microsoft.Practices.ObjectBuilder.IBuilderContext, System.Type, System.Object, System.String)+56 
Microsoft.Practices.CompositeWeb.BuilderStrategies.SessionStateBindingStrategy.BuildUp(Microsoft.Practices.ObjectBuilder.IBuilderContext, System.Type, System.Object, System.String)+2be 
Microsoft.Practices.ObjectBuilder.BuilderStrategy.BuildUp(Microsoft.Practices.ObjectBuilder.IBuilderContext, System.Type, System.Object, System.String)+56 
Microsoft.Practices.CompositeWeb.BuilderStrategies.SessionStateBindingStrategy.BuildUp(Microsoft.Practices.ObjectBuilder.IBuilderContext, System.Type, System.Object, System.String)+2be 
Microsoft.Practices.ObjectBuilder.BuilderStrategy.BuildUp(Microsoft.Practices.ObjectBuilder.IBuilderContext, System.Type, System.Object, System.String)+56 
Microsoft.Practices.CompositeWeb.BuilderStrategies.SessionStateBindingStrategy.BuildUp(Microsoft.Practices.ObjectBuilder.IBuilderContext, System.Type, System.Object, System.String)+2be 

<Trimmed> 

Microsoft.Practices.ObjectBuilder.BuilderStrategy.BuildUp(Microsoft.Practices.ObjectBuilder.IBuilderContext, System.Type, System.Object, System.String)+56 
Microsoft.Practices.CompositeWeb.BuilderStrategies.ContainerAwareTypeMappingStrategy.BuildUp(Microsoft.Practices.ObjectBuilder.IBuilderContext, System.Type, System.Object, System.String)+28e 
Microsoft.Practices.ObjectBuilder.BuilderStrategy.BuildUp(Microsoft.Practices.ObjectBuilder.IBuilderContext, System.Type, System.Object, System.String)+56 
Microsoft.Practices.CompositeWeb.BuilderStrategies.ContainerAwareTypeMappingStrategy.BuildUp(Microsoft.Practices.ObjectBuilder.IBuilderContext, System.Type, System.Object, System.String)+28e 
Microsoft.Practices.ObjectBuilder.BuilderStrategy.BuildUp(Microsoft.Practices.ObjectBuilder.IBuilderContext, System.Type, System.Object, System.String)+56 
Microsoft.Practices.CompositeWeb.BuilderStrategies.ContainerAwareTypeMappingStrategy.BuildUp(Microsoft.Practices.ObjectBuilder.IBuilderContext, System.Type, System.Object, System.String)+28e 
Microsoft.Practices.CompositeWeb.ObjectBuilder.WCSFBuilderBase`1[[Microsoft.Practices.CompositeWeb.ObjectBuilder.WCSFBuilderStage, Microsoft.Practices.CompositeWeb]].DoBuildUp(Microsoft.Practices.ObjectBuilder.IReadWriteLocator, System.Type, System.String, System.Object, Microsoft.Practices.ObjectBuilder.PolicyList[])+13a 
Microsoft.Practices.CompositeWeb.ObjectBuilder.WCSFBuilderBase`1[[Microsoft.Practices.CompositeWeb.ObjectBuilder.WCSFBuilderStage, Microsoft.Practices.CompositeWeb]].BuildUp(Microsoft.Practices.ObjectBuilder.IReadWriteLocator, System.Type, System.String, System.Object, Microsoft.Practices.ObjectBuilder.PolicyList[])+64 
Microsoft.Practices.CompositeWeb.CompositionContainer.BuildItem(Microsoft.Practices.ObjectBuilder.IBuilder`1<Microsoft.Practices.CompositeWeb.ObjectBuilder.WCSFBuilderStage>, Microsoft.Practices.ObjectBuilder.IReadWriteLocator, System.Object)+334 
Microsoft.Practices.CompositeWeb.WebClientApplication.BuildItemWithCurrentContext(System.Object)+121 
Microsoft.Practices.CompositeWeb.Web.UI.UserControl.OnInit(System.EventArgs)+3f 
System.Web.UI.Control.InitRecursive(System.Web.UI.Control)+8f 
System.Web.UI.Control.InitRecursive(System.Web.UI.Control)+187 
System.Web.UI.Control.InitRecursive(System.Web.UI.Control)+187 
System.Web.UI.Control.InitRecursive(System.Web.UI.Control)+187 
System.Web.UI.Control.AddedControl(System.Web.UI.Control, Int32)+10f 
DevExpress.Web.ASPxTabControl.Internal.PCContentsControl.CreateControlHierarchy()+2ae 
DevExpress.Web.ASPxClasses.ASPxWebControlBase.CreateChildControls()+33 

<Trimmed> 
System.Web.UI.Control.EnsureChildControls()+92 
DevExpress.Web.ASPxClasses.ASPxWebControlBase.EnsureChildControls()+9 
DevExpress.Web.ASPxClasses.ASPxWebControlBase.DevExpress.Web.ASPxClasses.Internal.IASPxWebControl.EnsureChildControls()+d 
DevExpress.Web.ASPxClasses.Internal.RenderUtils.EnsureChildControlsRecursive(System.Web.UI.Control, Boolean)+3e 
DevExpress.Web.ASPxClasses.Internal.RenderUtils.EnsureChildControlsRecursive(System.Web.UI.Control, Boolean)+d0 
DevExpress.Web.ASPxClasses.ASPxWebControlBase.EnsureChildControlsRecursive(System.Web.UI.Control)+25 
DevExpress.Web.ASPxClasses.ASPxWebControl.CreateChildControls()+166 
System.Web.UI.Control.EnsureChildControls()+92 
DevExpress.Web.ASPxClasses.ASPxWebControlBase.EnsureChildControls()+9 
DevExpress.Web.ASPxClasses.ASPxWebControlBase.DevExpress.Web.ASPxClasses.Internal.IASPxWebControl.EnsureChildControls()+d 
DevExpress.Web.ASPxClasses.Internal.RenderUtils.EnsureChildControlsRecursive(System.Web.UI.Control, Boolean)+3e 
DevExpress.Web.ASPxClasses.Internal.RenderUtils.EnsureChildControlsRecursive(System.Web.UI.Control, Boolean)+d0 
DevExpress.Web.ASPxClasses.ASPxWebControlBase.EnsureChildControlsRecursive(System.Web.UI.Control)+25 
DevExpress.Web.ASPxClasses.ASPxWebControl.CreateChildControls()+166 
System.Web.UI.Control.EnsureChildControls()+92 
DevExpress.Web.ASPxClasses.ASPxWebControlBase.EnsureChildControls()+9 
DevExpress.Web.ASPxClasses.ASPxWebControl.InitInternal()+48 
DevExpress.Web.ASPxClasses.ASPxDataWebControlBase.OnInit(System.EventArgs)+1c 
System.Web.UI.Control.InitRecursive(System.Web.UI.Control)+8f 
System.Web.UI.Control.InitRecursive(System.Web.UI.Control)+187 
System.Web.UI.Control.InitRecursive(System.Web.UI.Control)+187 
System.Web.UI.Control.InitRecursive(System.Web.UI.Control)+187 
System.Web.UI.Control.InitRecursive(System.Web.UI.Control)+187 
System.Web.UI.Control.InitRecursive(System.Web.UI.Control)+187 
System.Web.UI.Page.ProcessRequestMain(Boolean, Boolean)+5c5 
System.Web.UI.Page.ProcessRequest(Boolean, Boolean)+a0 
System.Web.UI.Page.ProcessRequest()+5b 
System.Web.UI.Page.ProcessRequest(System.Web.HttpContext)+f0 
ASP.xxxdashboards_recordlistview_aspx.ProcessRequest(System.Web.HttpContext)+9 

Мы видим следующий код в узком рекурсивном цикле, который в конечном итоге приводит к ситуации StackOverflow.

Microsoft.Practices.ObjectBuilder.BuilderStrategy.BuildUp(Microsoft.Practices.ObjectBuilder.IBuilderContext, System.Type, System.Object, System.String) 
Microsoft.Practices.CompositeWeb.BuilderStrategies.ContainerAwareTypeMappingStrategy.BuildUp(Microsoft.Practices.ObjectBuilder.IBuilderContext, System.Type, System.Object, System.String) 
Microsoft.Practices.ObjectBuilder.BuilderStrategy.BuildUp(Microsoft.Practices.ObjectBuilder.IBuilderContext, System.Type, System.Object, System.String) 
Microsoft.Practices.CompositeWeb.BuilderStrategies.ContainerAwareTypeMappingStrategy.BuildUp(Microsoft.Practices.ObjectBuilder.IBuilderContext, System.Type, System.Object, System.String) 

Кроме того, они также добавили следующее.
Посмотрел в код, чтобы увидеть бесконечный цикл и здесь, кажется, дело
Внутри Microsoft_Practices_CompositeWeb! Microsoft.Practices.CompositeWeb.BuilderStrategies.SessionStateBindingStrategy

public override object BuildUp(IBuilderContext context, Type typeToBuild, object existing, string idToBuild) 
{ 
    ISessionStateLocatorService service = context.Locator.(object);" href="http://www.aisto.com/roeder/dotnet/Default.aspx?Target=code://Microsoft.Practices.ObjectBuilder:1.0.51206.0:b03f5f7f11d50a3a/Microsoft.Practices.ObjectBuilder.IReadableLocator/Get<>(Object):"Get<ISessionStateLocatorService>(new DependencyResolutionLocatorKey(typeof(ISessionStateLocatorService), null)); 
    if (service != null) 
    { 
     IHttpSessionState sessionState = service.GetSessionState(); 
     foreach (FieldInfo info in typeToBuild.GetFields()) 
     { 
      this.SetFieldValue(existing, info, sessionState); 
     } 
    } 
    return base.BuildUp(context, typeToBuild, existing, idToBuild); 
} 

Таким образом, это вызывает раскачки, определенные в Microsoft_Practices_ObjectBuilder! Microsoft. Practices.ObjectBuilder.BuilderStrategy

public virtual object BuildUp(IBuilderContext context, Type typeToBuild, object existing, string idToBuild) 
{ 
    IBuilderStrategy nextInChain = context.GetNextInChain(this); 
    if (nextInChain != null) 
    { 
     return nextInChain.BuildUp(context, typeToBuild, existing, idToBuild); 
    } 
    return existing; 
} 

Это приводит к бесконечному циклу.

--- Конец Microsoft ответ ---

Мы не уверены, где искать этот вопрос на данный момент, и если кто-нибудь могут помочь нам решить эту проблему было бы очень высоко ценятся.

+3

«Вопросы, связанные с профессиональным сервером, сетью или связанной с ними инфраструктурой, не относятся к теме для переполнения стека, если только они не связаны напрямую с инструментами программирования или программирования. Возможно, вам удастся получить помощь при сбое сервера». – zero323

+2

Похоже, Microsoft дала вам очень хорошее направление. Они показали вам, где ваш код встречает бесконечный рекурсивный цикл (в результате возникает исключение StackOverflow). – jadarnel27

+1

@ zero323 Я не вижу, как это даже немного по теме для Server Fault. – jadarnel27

ответ

1

У меня была аналогичная проблема с IIS Crash и кодом исключения «0xc00000fd». Я рекомендую вам поймать свалку.

1) Установите программное обеспечение, чтобы получить сбой аварийной ситуации. Я рекомендую DebugDiag Tools.

2) После установки, настройки DebugDiag Tool следуя этой инструкции:

  • Выбор правила Краш Выбор пула IIS App (w3wp.exe)
  • Выбор пула приложений приложения
  • Конфигурирование стека по потоку исключение (0xc00000fd) в дополнительных настройках/исключениях и завершение настройка.

3) Подождите, пока в папке не появится первый аварийный дамп. Пример: C: \ DebugDiag \ Logs. Когда создавался аварийный дамп, используйте DebugDiag Analysis, чтобы открыть файл из C: \ DebugDiag \ Logs и будет создан HTML-отчет.

4) В отчете вы быстро видите проблему в сводке анализа в верхней части страницы. В моем случае была рекурсивная функция без остановки, что привело к снижению опроса приложения.

Смежные вопросы