由于 SQL Server 日志中的内存压力消息,AppDomain 2 (mssqlsystemresource.dbo[runtime].1) 被标记为卸载

Md *_*han 4 memory sql-server-2012 event-notification sql-clr

从最近两天开始,我可以在 SQL Server 错误日志中看到以下内容。

AppDomain 2 (mssqlsystemresource.dbo[runtime].1) unloaded.
&
AppDomain 2 (mssqlsystemresource.dbo[runtime].1) is marked for unload due to memory pressure.
Run Code Online (Sandbox Code Playgroud)

我有这样的系统环境:

OS- microosft windows server 2012 R2 Standard
processors - Intel(R) Xeon(R) CPU E5-2670 0 @2.60 GHz
Installed Memory (RAM) - 8GB
Hardware Information - VMWare, Inc. VMware Virtual Platform
SQL Server - Microsoft SQL Server Enterprise (64-bit)
Run Code Online (Sandbox Code Playgroud)

我已经在本地服务器中查看了昨天的事件日志。我找到了这些事件

Server Name ID  Severity    Source            Log      Date and Time
ABC    1008 Error   Microsoft-Windows-Perflib Application 10/01/2015 2:21
ABC     2   Error   TeamCentral      Application      9/30/2015 4:20:41 PM
ABC    1309 Warning ASP.NET 4.0.30319.0 Application 9/30/2015 4:20:41 PM
ABC   10016 Error Microsoft-Windows-DistributedCOM System 9/30/2015 4:06:23 PM
ABC   10016 Error   Microsoft-Windows-DistributedCOM    System  9/30/2015 4:00:04 PM
ABC 10016   Error   Microsoft-Windows-DistributedCOM    System  9/30/2015 4:00:02 PM
ABC 2   Error   TeamCentral Application 9/30/2015 3:55:13 PM
ABC 1309    Warning ASP.NET 4.0.30319.0 Application 9/30/2015 3:55:13 PM
ABC 10016   Error   Microsoft-Windows-DistributedCOM    System  9/30/2015 3:40:06 PM
ABC 10016   Error   Microsoft-Windows-DistributedCOM    System  9/30/2015 3:40:03 PM
ABC 1309    Warning ASP.NET 4.0.30319.0 Application 9/30/2015 3:23:54 PM
ABC 2   Error   TeamCentral Application 9/30/2015 3:23:54 PM
ABC 2   Error   TeamCentral Application 9/30/2015 3:22:48 PM
ABC 1309    Warning ASP.NET 4.0.30319.0 Application 9/30/2015 3:22:48 PM
ABC 2   Error   TeamCentral Application 9/30/2015 3:21:43 PM
ABC 1309    Warning ASP.NET 4.0.30319.0 Application 9/30/2015 3:21:43 PM
ABC 2   Error   TeamCentral Application 9/30/2015 3:18:24 PM
ABC 1309    Warning ASP.NET 4.0.30319.0 Application 9/30/2015 3:18:24 PM
ABC 2   Error   TeamCentral Application 9/30/2015 3:16:49 PM
ABC 1309    Warning ASP.NET 4.0.30319.0 Application 9/30/2015 3:16:49 PM
ABC 1309    Warning ASP.NET 4.0.30319.0 Application 9/30/2015 3:15:43 PM
ABC 2   Error   TeamCentral Application 9/30/2015 3:15:43 PM
ABC 1010    Error   Microsoft-Windows-Perflib   Application 9/30/2015 10:42:00 AM
Run Code Online (Sandbox Code Playgroud)

在事件中,我收到了这样的消息:

    Event code: 3005 
Event message: An unhandled exception has occurred. 
Event time: 9/30/2015 4:20:41 PM 
Event time (UTC): 9/30/2015 1:20:41 PM 
Event ID: 72c24cb89beb4d7f80bec250aaa686e3 
Event sequence: 757 
Event occurrence: 17 
Event detail code: 0 

Application information: 
    Application domain: /XX/XXXX/1/ROOT/TeamCentral-2-130850431401577570 
    Trust level: Full 
    Application Virtual Path: /TeamCentral 
    Application Path: C:\XXXX\wwwroot\TeamCentral\ 
    Machine name: ABC

Process information: 
    Process ID: 2180 
    Process name: w3wp.exe 
    Account name: NT AUTHORITY\NETWORK SERVICE 

Exception information: 
    Exception type: HttpException 
    Exception message: The remote host closed the connection. The error code is 0x800704CD.
   at System.Web.Hosting.IIS7WorkerRequest.RaiseCommunicationError(Int32 result, Boolean throwOnDisconnect)
   at System.Web.Hosting.IIS7WorkerRequest.ExplicitFlush()
   at System.Web.HttpResponse.Flush(Boolean finalFlush, Boolean async)
   at System.Web.HttpWriter.WriteFromStream(Byte[] data, Int32 offset, Int32 size)
   at DevExpress.Web.ASPxClasses.Internal.HttpUtils.WriteFileToResponse(Page page, MemoryStream stream, String fileName, Boolean saveAsFile, String fileFormat, String contentType)
   at DevExpress.Web.ASPxClasses.Internal.HttpUtils.WriteFileToResponse(Page page, MemoryStream stream, String fileName, Boolean saveAsFile, String fileFormat)
   at DevExpress.Web.ASPxGridView.Export.ASPxGridViewExporter.WriteToResponse(String fileName, Boolean saveAsFile, String fileFormat, ExportToStream getStream, ExportOptionsBase options)
   at DevExpress.Web.ASPxGridView.Export.ASPxGridViewExporter.WriteXlsxToResponse(String fileName, Boolean saveAsFile)
   at DevExpress.Web.ASPxGridView.Export.ASPxGridViewExporter.WriteXlsxToResponse(String fileName)
   at InfoArch.Web.Grid.ExportHelper.Response(ExportFileType fileType, Grid structure)
   at InfoArch.Web.Grid.GridManager.SaveToXlsx(String filename)
   at System.Web.UI.WebControls.ImageButton.OnClick(ImageClickEventArgs e)
   at System.Web.UI.WebControls.ImageButton.RaisePostBackEvent(String eventArgument)
   at System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint)



Request information: 
    Request URL: http://ABC/TeamCentral/Reporting/GridView.aspx?layoutid=38&mf=report&where=&description=PZF6Q0PKJzWQDHkN08mydZNuJ3fZ(:#cd6TgCAL0hv4u4=&screenheight=618 
    Request path: /TeamCentral/Reporting/GridView.aspx 
    User host address:XXX.XXX.XX.XXX 
    User: rafeek 
    Is authenticated: True 
    Authentication Type:  
    Thread account name: NT AUTHORITY\NETWORK SERVICE 

Thread information: 
    Thread ID: 190 
    Thread account name: NT AUTHORITY\NETWORK SERVICE 
    Is impersonating: False 
    Stack trace:    at System.Web.Hosting.IIS7WorkerRequest.RaiseCommunicationError(Int32 result, Boolean throwOnDisconnect)
   at System.Web.Hosting.IIS7WorkerRequest.ExplicitFlush()
   at System.Web.HttpResponse.Flush(Boolean finalFlush, Boolean async)
   at System.Web.HttpWriter.WriteFromStream(Byte[] data, Int32 offset, Int32 size)
   at DevExpress.Web.ASPxClasses.Internal.HttpUtils.WriteFileToResponse(Page page, MemoryStream stream, String fileName, Boolean saveAsFile, String fileFormat, String contentType)
   at DevExpress.Web.ASPxClasses.Internal.HttpUtils.WriteFileToResponse(Page page, MemoryStream stream, String fileName, Boolean saveAsFile, String fileFormat)
   at DevExpress.Web.ASPxGridView.Export.ASPxGridViewExporter.WriteToResponse(String fileName, Boolean saveAsFile, String fileFormat, ExportToStream getStream, ExportOptionsBase options)
   at DevExpress.Web.ASPxGridView.Export.ASPxGridViewExporter.WriteXlsxToResponse(String fileName, Boolean saveAsFile)
   at DevExpress.Web.ASPxGridView.Export.ASPxGridViewExporter.WriteXlsxToResponse(String fileName)
   at InfoArch.Web.Grid.ExportHelper.Response(ExportFileType fileType, Grid structure)
   at InfoArch.Web.Grid.GridManager.SaveToXlsx(String filename)
   at System.Web.UI.WebControls.ImageButton.OnClick(ImageClickEventArgs e)
   at System.Web.UI.WebControls.ImageButton.RaisePostBackEvent(String eventArgument)
   at System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint)


Custom event details: 
Run Code Online (Sandbox Code Playgroud)

在问这个问题之前,我已经浏览了 Stackexchange,我发现由于内存压力,ref App 域被标记为卸载,但从某些角度来看,无法理解事件日志消息。

的输出select @@version

Microsoft SQL Server 2012 (SP1) - 11.0.3000.0 (X64) 2012 年 10 月 19 日 13:38:57 版权所有 (c) Microsoft Corporation Enterprise Edition(64 位)在 Windows NT 6.2(Build 9200:)(管理程序)上

和输出 exec sp_configure

Name                    minimum     maximum      config_value     run_value 
max server memory (MB)   128        2147483647    2147483647     2147483647
Run Code Online (Sandbox Code Playgroud)

任何建议将不胜感激。

Sol*_*zky 7

不打折@Shanky 的回答中所述的任何内容,应该注意的是,正在卸载的特定 AppDomain 位于[mssqlsystemresource]数据库中。这是一个存储内置 SQL Server 功能的内部数据库。其他内置功能驻留在[master]数据库中。即使关闭了“CLR 已启用”的服务器级配置选项,如果您使用以下任何一种,您仍然可以看到这些 AppDomains 中的一个或两个正在加载(并且可能有 CLR 的其他内部用途不在此范围内)列表):

  • 数据类型:
    • 层次ID
    • 地理
    • 几何学
  • 职能:
    • 格式
    • TRY_CONVERT
    • TRY_PARSE
  • 特征:
    • 变更数据捕获
    • 动态管理框架
    • 复制
    • 基于策略的管理

运行以下命令:

SELECT * FROM sys.dm_clr_appdomains;
SELECT * FROM sys.dm_clr_loaded_assemblies;
Run Code Online (Sandbox Code Playgroud)

如果没有返回行,则运行以下命令:

SELECT FORMAT(GETDATE(), 'dd');
SELECT * FROM sys.dm_clr_appdomains;
SELECT * FROM sys.dm_clr_loaded_assemblies;
Run Code Online (Sandbox Code Playgroud)

您现在应该看到“master.sys[runtime].xx”的条目(其中xx是某个数字),但仍然没有加载程序集。现在运行:

DECLARE @Test [HierarchyID];
SET @Test = '/1/';
SELECT * FROM sys.dm_clr_appdomains;
SELECT * FROM sys.dm_clr_loaded_assemblies;
Run Code Online (Sandbox Code Playgroud)

您现在也应该看到一个加载的程序集。它应该是 assembly_id 1 并且在所有数据库中都是相同的条目:Microsoft.SqlServer.Types。如果您运行SELECT * FROM sys.assemblies;,此程序集会出现在所有数据库中,但它只真正存在于[master].