我们有一个应用程序池和一个旧的ASP.NET 2.0 WebForms应用程序使用专有库来连接到数据库。
我们将面对OutofMemoryExceptions,并且作为库是一个黑匣子,我们无法更改。我正在尝试确保正确设置应用程序池设置。
Web服务器已安装了8 GB的内存,并且应用程序池的设置为:
回收
私人内存限制(KB(:0常规时间间隔(分钟(:0请求。限制:0虚拟内存限制(KB(:3145728
您认为这是正确的吗?
例外消息:
Exception of type 'System.Web.HttpUnhandledException' was thrown.
ContentType: System.OutOfMemoryException: Exception of type 'System.OutOfMemoryException' was thrown.
at System.Data.SqlClient.SqlBuffer.set_SqlGuid(SqlGuid value)
at System.Data.SqlClient.TdsParser.ReadSqlValueInternal(SqlBuffer value, Byte tdsType, Int32 typeId, Int32 length, TdsParserStateObject stateObj)
at System.Data.SqlClient.TdsParser.ReadSqlValue(SqlBuffer value, SqlMetaDataPriv md, Int32 length, TdsParserStateObject stateObj)
at System.Data.SqlClient.SqlDataReader.ReadColumnData()
at System.Data.SqlClient.SqlDataReader.ReadColumn(Int32 i, Boolean setTimeout)
at System.Data.SqlClient.SqlDataReader.GetGuid(Int32 i)
at Adam.Core.DataMapper.PagingDataReader.GetGuid(Int32 i)
at Adam.Core.DataMapper.Fields.GuidTableField.AssignReader(IDataReader reader, Int32 columnIndex)
at Adam.Core.DataMapper.ItemBase.AssignReader(IDataReader reader, SqlMappings mappings)
at Adam.Core.DataMapper.ExtendedItemBase.AssignReader(IDataReader reader, SqlMappings mappings)
at Adam.Core.Records.RecordCollection.Load(SearchExpression expression, String sortOrder, Int32 pageNumber, Int32 recordsPerPage, Boolean& isLastPage, Int32 maxRecords, RecordLoadOptions options)
at Adam.Core.Records.RecordCollection.Load(SearchExpression expression, String sortOrder, Int32 pageNumber, Int32 recordsPerPage, Boolean& isLastPage, Int32 maxRecords)
at Adam.Core.DataMapper.ExtendedItemBaseCollection.Load(SearchExpression expression, String sortOrder)
at AssetFilePage.Page_Load(Object sender, EventArgs e) in e:AppWEBAPP.WebSitefile.aspx.cs:line 27
at System.Web.Util.CalliHelper.EventArgFunctionCaller(IntPtr fp, Object o, Object t, EventArgs e)
at System.Web.Util.CalliEventHandlerDelegateProxy.Callback(Object sender, EventArgs e)
at System.Web.UI.Control.OnLoad(EventArgs e)
at System.Web.UI.Control.LoadRecursive()
at System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint)
预先感谢您。
我建议使用下面的设置作为起点:
私人内存限制(KB(:1048576
常规时间间隔(分钟(:1440
request.limit:10000
虚拟内存限制(KB(:1048576
将私有内存和虚拟内存限制为1GB,具有常规回收(24小时(和某种请求限制(0是无限的(。这将是监视您的应用程序并微调以下直到您获得最佳位置的情况。
请参阅此处以获取更多信息:https://technet.microsoft.com/en-gb/library/cc745955.aspx