2012-08-02 2 views
1

Telerik Extensions 메뉴가있는 MVC3 응용 프로그램을 배포 한 후 OutOfMemoryException을 throw 한 후 응용 프로그램이 정지되고 사용자가 약 1 시간 후에 또는 그 이후까지 응용 프로그램을 사용할 수 없다는 점을 지적했습니다. 그래서. MVC3 메모리 부족 예외

나는 윈도우 이벤트 로그에서 오류를 추적 관리하고 다음과 같은 이벤트에서 추출 된 오류 중 하나의 스택 추적

예외 정보 기록입니다 : 스택의

Exception type: OutOfMemoryException 
Exception message: Exception of type 'System.OutOfMemoryException' was thrown. 
at System.RuntimeTypeHandle.ConstructName(RuntimeTypeHandle handle, 
Boolean nameSpace, Boolean fullInst, Boolean assembly, StringHandleOnStack retString) 
at System.RuntimeType.RuntimeTypeCache.ConstructName(String& name, Boolean nameSpace, Boolean fullinst, Boolean assembly) 
at System.RuntimeType.get_Name() 
at Telerik.Web.Mvc.Infrastructure.Implementation.ControllerTypeCache.<GetAllControllerTypes>b__d(Type type) 
at System.Linq.Enumerable.WhereArrayIterator`1.MoveNext() 
at Telerik.Web.Mvc.Extensions.CollectionExtensions.AddRange[T](ICollection`1 instance, IEnumerable`1 collection) 
at Telerik.Web.Mvc.Infrastructure.Implementation.ControllerTypeCache.GetAllControllerTypes() 
at Telerik.Web.Mvc.Infrastructure.Implementation.ControllerTypeCache.<GetControllerTypesWithinNamespaces>b__4() 
at Telerik.Web.Mvc.Infrastructure.Implementation.Cache.Get[T](String key, Func`1 defaultValueFactory) 
at Telerik.Web.Mvc.Infrastructure.Implementation.ControllerTypeCache.GetControllerTypesWithinNamespaces(String controllerName, IEnumerable`1 namespaces) 
at Telerik.Web.Mvc.Infrastructure.Implementation.ControllerTypeCache.GetControllerTypes(String controllerName) 
at Telerik.Web.Mvc.Infrastructure.Implementation.ControllerDescriptorCache.ControllerDescriptorFactory(String controllerName, String areaName) 
at Telerik.Web.Mvc.Infrastructure.Implementation.ControllerDescriptorCache.<>c__DisplayClass1.<GetControllerDescriptor>b__0() 
at Telerik.Web.Mvc.Infrastructure.Implementation.Cache.Get[T](String key, Func`1 defaultValueFactory) 
at Telerik.Web.Mvc.Infrastructure.Implementation.ControllerDescriptorCache.GetControllerDescriptor(String controllerName, String areaName) 
at Telerik.Web.Mvc.Infrastructure.Implementation.AuthorizationContextCache.AuthorizationContextFactory(RequestContext requestContext, String controllerName, String actionName, String areaName) 
at Telerik.Web.Mvc.Infrastructure.Implementation.AuthorizationContextCache.<>c__DisplayClass1.<GetAuthorizationContext>b__0() 
at Telerik.Web.Mvc.Infrastructure.Implementation.Cache.Get[T](String key, Func`1 defaultValueFactory) 
at Telerik.Web.Mvc.Infrastructure.Implementation.AuthorizationContextCache.GetAuthorizationContext(RequestContext requestContext, String controllerName, String actionName, RouteValueDictionary routeValues) 
at Telerik.Web.Mvc.Infrastructure.Implementation.ControllerAuthorization.IsAccessibleToUser(RequestContext requestContext, String controllerName, String actionName, RouteValueDictionary routeValues) 
at Telerik.Web.Mvc.Infrastructure.Implementation.NavigationItemAuthorization.IsAccessibleToUser(RequestContext requestContext, INavigatable navigationItem) 
at Telerik.Web.Mvc.UI.NavigatableExtensions.<>c__DisplayClass2`1.<IsAccessible>b__1(T item) 
at System.Linq.Enumerable.Any[TSource](IEnumerable`1 source, Func`2 predicate) 
at Telerik.Web.Mvc.UI.NavigatableExtensions.IsAccessible[T](IEnumerable`1 items, INavigationItemAuthorization authorization, ViewContext viewContext) 
at Telerik.Web.Mvc.UI.NavigationItemContainerExtensions.WriteItem[TComponent,TItem](TItem item, TComponent component, IHtmlNode parentTag, INavigationComponentHtmlBuilder`1 builder) 
at Telerik.Web.Mvc.UI.Menu.<>c__DisplayClass4.<WriteHtml>b__3(MenuItem item) 
at Telerik.Web.Mvc.Extensions.EnumerableExtensions.Each[T](IEnumerable`1 instance, Action`1 action) 
at Telerik.Web.Mvc.UI.Menu.WriteHtml(HtmlTextWriter writer) 
at Telerik.Web.Mvc.UI.ViewComponentBase.Render() 
at Telerik.Web.Mvc.UI.ViewComponentBuilderBase`2.Render() 
at ASP._Page_Views_Shared__Layout_cshtml.Execute() in e:\kidda\Views\Shared\_Layout.cshtml:line 34 
at System.Web.WebPages.WebPageBase.ExecutePageHierarchy() 
at System.Web.Mvc.WebViewPage.ExecutePageHierarchy() 
at System.Web.WebPages.WebPageBase.ExecutePageHierarchy(WebPageContext pageContext, TextWriter writer, WebPageRenderingBase startPage) 
at System.Web.WebPages.WebPageBase.<>c__DisplayClass7.<RenderPageCore>b__6(TextWriter writer) 
at System.Web.WebPages.HelperResult.WriteTo(TextWriter writer) 
at System.Web.WebPages.WebPageBase.Write(HelperResult result) 
at System.Web.WebPages.WebPageBase.RenderSurrounding(String partialViewName, Action`1 body) 
at System.Web.WebPages.WebPageBase.PopContext() 
at System.Web.WebPages.WebPageBase.ExecutePageHierarchy(WebPageContext pageContext, TextWriter writer, WebPageRenderingBase startPage) 
at System.Web.Mvc.RazorView.RenderView(ViewContext viewContext, TextWriter writer, Object instance) 
at System.Web.Mvc.BuildManagerCompiledView.Render(ViewContext viewContext, TextWriter writer) 
at System.Web.Mvc.ViewResultBase.ExecuteResult(ControllerContext context) 
at System.Web.Mvc.ControllerActionInvoker.InvokeActionResult(ControllerContext controllerContext, ActionResult actionResult) 
at System.Web.Mvc.ControllerActionInvoker.InvokeAction(ControllerContext controllerContext, String actionName) 
at System.Web.Mvc.Controller.ExecuteCore() 
at System.Web.Mvc.ControllerBase.Execute(RequestContext requestContext) 
at System.Web.Mvc.ControllerBase.System.Web.Mvc.IController.Execute(RequestContext requestContext) 
at System.Web.Mvc.MvcHandler.<>c__DisplayClass6.<>c__DisplayClassb.<BeginProcessRequest>b__5() 
at System.Web.Mvc.Async.AsyncResultWrapper.<>c__DisplayClass1.<MakeVoidDelegate>b__0() 
at System.Web.Mvc.Async.AsyncResultWrapper.<>c__DisplayClass8`1.<BeginSynchronous>b__7(IAsyncResult _) 
at System.Web.Mvc.Async.AsyncResultWrapper.WrappedAsyncResult`1.End() 
at System.Web.Mvc.MvcHandler.<>c__DisplayClasse.<EndProcessRequest>b__d() 
at System.Web.Mvc.SecurityUtil.<GetCallInAppTrustThunk>b__0(Action f) 
at System.Web.Mvc.SecurityUtil.ProcessInApplicationTrust(Action action) 
at System.Web.Mvc.MvcHandler.EndProcessRequest(IAsyncResult asyncResult) 
at System.Web.Mvc.MvcHandler.System.Web.IHttpAsyncHandler.EndProcessRequest(IAsyncResult result) 
at System.Web.HttpApplication.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute() 
at System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously) 

공통를 모든 오류 스택 추적에 추적은 응용 프로그램이 윈도우에서 실행되는 다음 코드

<nav> 
    <div id="topMenu" > 
     <div style="width: 45%; float: right"> 
      @{ Html.Telerik().Menu() 
       .Name("Menu") 
       .Items(menu => 
        { 
         menu.Add() 
         .Text("Ngaari") 
         .Items(item => 
         { 
          item.Add().Text("List").Action("Index", "Ngaari"); 
          item.Add().Text("Statement").Action("Index", "Statement"); 
         }); 
         menu.Add() 
         .Text("Njia") 
         .Action("Index", "Njia"); 
         menu.Add() 
         .Text("Kiama") 
         .Action("Index", "Kiama"); 
         menu.Add() 
         .Text("Ngaari Type") 
         .Action("Index", "NgaariType"); 
         menu.Add() 
         .Text("Admin") 
         .Items(item => 
         { 
          item.Add().Text("List Users").Action("Index", "Account"); 
          item.Add().Text("Add User").Action("NewUser", "Account"); 
          item.Add().Text("Change Password").Action("ChangePassword", "Account"); 
         }); 
       }) 
       .Render(); 
       } 
     </div> 
    </div> 
</nav> 

를 사용하여 메뉴를 그립니다 _Layout.cshtml 라인 34 2003 SP2는 메모리가 4Gb이고 사용자는 Mozilla Firefox를 사용하여 시스템에 액세스합니다.

Telerik 포럼 및 SOF에서 검색해 봤지만 유사한 문제가있을 수있는 답변이나 유사한 사용자가 없습니다.

이 오류의 원인은 무엇이고 어떻게 해결할 수 있습니까?

답변

1

서버의 성능과 메모리 사용을 모니터링하여 문제를 해결했습니다.

  • 설정 응용 프로그램 : 나는 IIS는 SQL Server와 메모리 경쟁 깨달았다 메모리가없는 자주 재활용되고 있던이 문제 IIS 6 Administration의 추천에 따라

    을 일으키는 것이었다, 나는 다음을 수행 미리 설정된 수의 요청 후에 재활용 할 풀

  • 활동이 적은 시간에 작업자 프로세스를 재활용하도록 시간을 설정하십시오.
  • 에서 사용할 가상 및 실제 메모리 양을 제한하십시오3210 응용 프로그램

위와 같은 작업을 수행하면 문제가 완전히 해결되었습니다.