アプリケーション ドメインのリサイクル後にw3wpプロセスがクラッシュする


説明

この問題は、Sitecore XP 9.1 Update-1以降のバージョンを実行しているオンプレミスのデプロイメントで発生します。.NET Frameworkのバグのため、.NETアプリケーションのAppDomainがリサイクルされるたびに、最初のリクエストの処理中にw3wpプロセスがクラッシュします。その後、IISはプロセスを再起動し、関連するプロセスが通常に動作するようになります。

この問題の発生の有無を確認するには、Windowsイベント ビューアの「アプリケーション」セクションで、次の2つのエントリがあるかを確認してください。一つ目は、ソース列に「Application Error」が含まれている、以下のようなエントリです:

Faulting application name: w3wp.exe, version: 10.0.16299.15, time stamp: 0x0aeb5595
Faulting module name: clr.dll, version: 4.7.3130.0, time stamp: 0x5b175fed
Exception code: 0xc0000005
Fault offset: 0x0000000000157b7f
Faulting process id: 0x3d80
Faulting application start time: 0x01d4b9548e3bc666
Faulting application path: c:\windows\system32\inetsrv\w3wp.exe
Faulting module path: C:\Windows\Microsoft.NET\Framework64\v4.0.30319\clr.dll
Report Id: 050088e2-61ac-40b8-bbd6-e17485b11aa1
Faulting package full name:
Faulting package-relative application ID:

二つ目は、ソース列に「.NET Runtime」が含まれている、以下のようなエントリです:

Application: w3wp.exe
Framework Version: v4.0.30319
Description: The process was terminated due to an internal error in the .NET Runtime at IP 00007FFB418F7B7F (00007FFB417A0000) with exit code 80131506.

このクラッシュが発生しても、w3wpに関連するログにエントリは追加されません。場合によっては、.NETアプリケーションを使用する他のロールがエラーをスローしないことがあります。一方で、次のようなエントリがログに記録される可能性もあります(xConnectを例とします):

Sitecore.XConnect.XdbCollectionUnavailableException : An error occurred while sending the request.
----> System.Net.Http.HttpRequestException : An error occurred while sending the request.
----> System.Net.WebException : The underlying connection was closed: An unexpected error occurred on a receive.
----> System.IO.IOException : Unable to read data from the transport connection: An existing connection was forcibly closed by the remote host.
----> System.Net.Sockets.SocketException : An existing connection was forcibly closed by the remote host

解決策

この問題を解決するには、Sitecore XPインスタンスをSitecore XP 10.1.2以降にアップグレードしてください。

または、以下のオプションの実施を検討してください:

Microsoftは、.NET Frameworkの2018年11月のセキュリティと品質のロールアップでこの.NET Frameworkのバグを修正しました。
まだこれを(直接か、後のロールアップか、あるいはWindows Update経由かに関わらず)インストールしていない場合は、貴社のWindowsバージョンの.NET 4.7.1に対応する更新プログラムをインストールしてください。

Microsoftの修正で問題が解決されない環境がいくつかあります。アップデートを適用した後でも問題が再発した場合、以下の回避策を実施してください: