增加进程内存使用量以停止System.OutOfMemoryException

时间:2017-12-04 19:24:52

标签: asp.net exception windows-server-2008-r2

我们的.NET应用程序在高峰使用期间看到了很多System.OutOfMemoryExcpetions,导致我们回收应用程序池。我很难过,因为我能做些什么来缓解这个问题。为了给出一些背景知识,我们的应用程序为每个客户动态生成子域,我们有很多子域,所有子域都分成许多不同的应用程序池(每个应用程序池大约有50个客户)。我们有一个带8处理器Xenon和56GB内存的专用服务器,页面文件目前设置为20GB。

平均而言,我们服务器的物理内存使用率约为40%,所以我知道我们的服务器可以处理更多。现在,我已经阅读了很多文章,解释了为什么这个异常与整个系统内存无关,并且更多地与应用程序池中的进程被重载有关。

所以我的问题是,我该怎么做才能让这些进程能够访问每个进程更多的内存?

更新 - 我被要求包含一个堆栈tace,这里有一个用于最近的execption。请记住,我不是在寻找如何修复异常,而是如何增加进程允许使用的内存:

  

在System.Runtime.CompilerServices.RuntimeHelpers._CompileMethod(IRuntimeMethodInfo)   方法)

     

在System.Reflection.Emit.DynamicMethod.CreateDelegate(Type delegateType)

     

at System.Data.Linq.SqlClient.ObjectReaderCompiler.Compile(SqlExpression)   表达式,类型elementType)

     

at System.Data.Linq.SqlClient.SqlProvider.GetReaderFactory(SqlNode node,Type elemType)

     

at System.Data.Linq.SqlClient.SqlProvider.System.Data.Linq.Provider.IProvider.Execute(Expression   查询)      在System.Data.Linq.DataQuery``1.System.Linq.IQueryProvider.Execute [S](表达式)   表达)

     

在System.Linq.Queryable.FirstOrDefault [TSource](IQueryable`1 source)

     

at Company.Task.TemplateTask.GetTemplateById(Template obj)

0 个答案:

没有答案
相关问题