web-dev-qa-db-ja.com

AppDomain 2(mssqlsystemresource.dbo [runtime] .1)は、SQL Serverログのメモリプレッシャーメッセージにより、アンロード用にマークされています

過去2日間から、SQL Serverのエラーログで以下を確認できます。

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

私はこのようなシステム環境を持っています:

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)

昨日のイベントログをローカルサーバーでチェックアウトしました。これらのイベントを見つけました

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

そしてイベントでは私はそのようなタイプのメッセージを得ています:

    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: 

質問をする前にStackexchangeを調べましたが、ref アプリドメインはメモリ不足のためにアンロード用にマークされています ですが、いくつかの観点から、イベントログメッセージを理解できません。

select @@versionの出力;

Microsoft SQL Server 2012(SP1)-11.0.3000.0(X64)2012年10月19日13:38:57 Copyright(c)Microsoft Corporation Enterprise Edition(64-bit)on Windows NT 6.2(Build 9200:)(Hypervisor)

およびexec sp_configureの出力;

Name                    minimum     maximum      config_value     run_value 
max server memory (MB)   128        2147483647    2147483647     2147483647

任意の提案をいただければ幸いです。

4

@Shankyの回答で述べられていることを何も割り引かずに、アンロードされる特定のAppDomainが[mssqlsystemresource]データベースにあることに注意してください。これは、組み込みのSQL Server機能を格納する内部データベースです。その他の組み込み機能は[master]データベースにあります。 "CLR有効"のサーバーレベルの構成オプションがオフになっていても、次のいずれかを使用すると、これらのAppDomainの一方または両方が読み込まれていることを確認できます(これに含まれないCLRの他の内部使用がある可能性があります)リスト):

  • データ型:
    • HierarchyID
    • 地理
    • ジオメトリ
  • 関数:
    • フォーマット
    • TRY_CONVERT
    • TRY_PARSE
  • 特徴:
    • 変更データキャプチャ
    • 動的管理フレームワーク
    • レプリケーション
    • ポリシーベースの管理

以下を実行します。

SELECT * FROM sys.dm_clr_appdomains;
SELECT * FROM sys.dm_clr_loaded_assemblies;

行が返されない場合は、次を実行します。

SELECT FORMAT(GETDATE(), 'dd');
SELECT * FROM sys.dm_clr_appdomains;
SELECT * FROM sys.dm_clr_loaded_assemblies;

これで、「master.sys [runtime] .xx」(xxはいくつかの数字です)のエントリが表示されますが、読み込まれたアセンブリはまだありません。今実行します:

DECLARE @Test [HierarchyID];
SET @Test = '/1/';
SELECT * FROM sys.dm_clr_appdomains;
SELECT * FROM sys.dm_clr_loaded_assemblies;

また、読み込まれたアセンブリも表示されます。これはAssembly_id 1である必要があり、すべてのデータベースで同じエントリです:Microsoft.SqlServer.Types。このアセンブリは、SELECT * FROM sys.assemblies;を実行するとすべてのデータベースに表示されますが、[master]にのみ存在します。

6
Solomon Rutzky

まず、SQL Server 2012にSP1のパッチを適用します。できるだけ早く、SQL Serverに SQL Server 2012 SP2 をパッチしてください。

SQl Server 2012 Sp2には、メモリに関連するいくつかの顕著な修正がありました。 OOMエラー修正を文書化したKB記事 のいずれかをお読みください。よく見ると、修正も対象です

メモリ不足のため、AppDomain 3181()はアンロード用にマークされています。 AppDomain 3181()がアンロードされました。エラー:9602、重大度:16、状態:1。

詳細な分析が必要なため、上記のバグに遭遇する可能性があることを確実に言っているわけではありません。

2回だけです。過去2日間の最初のステートメントですでに書いています。このエラーが発生します。

2日以内にこのメッセージtwiceのみが表示されることを確認したので、これはそれほど心配する必要はないと思います。 Sometimes such messages are benign when CLR is loaded and unloaded。これはmessage is frequent。この場合、さらに分析が必要になります。

アプリドメインのメッセージは、VASの制限のため、32ビットシステムでは実際に問題でした。 64ビットシステムのアプリドメインのアンロードされたメッセージの主な原因は、corrupt .net frameworkまたはincorrectly set max server memory value。しかし、SQL Server 2008 r2まではそれが真実でした。 CLRのメモリは2012年以降、設定した最大サーバーメモリから割り当てられるため、これはそれほど問題にはなりません。したがって、.Netフレームワークに関連するメッセージも確認することをお勧めします。 .netトラブルシューティングの進め方はあまり経験がありません。

Do you use SQLCLR objects ?SQLCLRを使用するとログに記録されるさまざまなエラーメッセージ を参照してください。 SQL Serverのエラーログにそのようなメッセージが多数表示された場合の対処方法について、 Bob by Bob Dorr があります。

ABC 1008エラーMicrosoft-Windows-Perflibアプリケーション10/01/2015 2:21 ABC 2エラーTeamCentralアプリケーション9/30/2015 4:20:41 PM。

私はこれが.Netフレームワークに関連していると思います。

2
Shanky