2016-10-08 110 views
4

2012 R2サーバー上のさまざまなIISアプリケーションプールのメモリダンプをキャプチャしようとすると、私は、タスクマネージャを使用して試してみたが、それは、管理コンソールでprocdumpを使用してだけでなく、エラーを生成します。私は-maと-MAと-64とprocdump64それらはすべてのさまざまな組み合わせを試してみましたダンプファイルを書き込む際にエラーが発生しました:0x80070005エラー0x80070005(-2147024891):アクセスが拒否されました

PS C:\Users\_______\Downloads> procdump -mA 31016 

ProcDump v7.1 - Writes process dump files 
Copyright (C) 2009-2014 Mark Russinovich 
Sysinternals - www.sysinternals.com 
With contributions from Andrew Richards 

[19:59:22] Dump 1 initiated: C:\Users\____\Downloads\w3wp.exe_161008_195922.dmp 
[19:59:25] Dump 1 writing: Estimated dump file size is 29278 MB. 
[20:01:15] Dump 1 error: Error writing dump file: 0x80070005 
Error 0x80070005 (-2147024891): Access is denied. 

[20:01:15] Waiting for dump to complete... 
[20:01:17] Dump count not reached. 

〜16GB以上のメモリを使用するワーカープロセスで、同じアクセス拒否エラーが発生する。

また、-rを追加して、How to: Take a Memory Dump of an ASP.NET Application Pool Quicklyで推奨されるプロセスを反映/クローンしましたが、上記と同じエラーメッセージが表示されます。

アップデート:デフォルトでは、IISアプリケーションプールは、90秒以内に内部の内部ping要求に応答しないとリサイクルされます。あなたは、この高度な設定で見ることができます。

90 second Ping Maximum Response Time

を、エラーメッセージが約90秒後に発生し、その可能性が高いことが問題の原因です。

+0

私は、コマンドプロンプトが管理者モードで実行されていることを願っています。また、DebugDiagを使用してみましたか?https://blogs.msdn.microsoft.com/parvez/2016/08/06/iis-application-pool-crash-and-debug-diag/ –

答えて

9

したがって、procdumpは、-r reflect/cloneオプションを使用している場合でも、内部のpingに応答できないワーカープロセスを中断します。また、ダンプファイルへのメモリの書き込みに90秒以上かかる場合、IISはワーカーをリサイクルし、古いプロセスを終了させます。読み込みしようとしていたメモリが割り当てられなくなり、プロセスが存在しなくなったため、Procdumpは「アクセスが拒否されました」または"Only part of a ReadProcessMemory or WriteProcessMemory request was completed"というエラーメッセージを返します。あなたはそれがprocdumpプロセスを中断できないようにもsvchost.exe -k iissvcsプロセスを中断するResouce MonitorProcess ExplorerまたはPsSuspendを使用することができますこの問題を回避するには

#Prevent IIS from recycling the process during procdump and causing an Access Denied error message 
$iispid = Get-Process svchost | ?{$_.modules.ModuleName -eq "iisw3adm.dll"} | Select -First 1 -ExpandProperty Id 
$workerpid = Get-Process w3wp | Sort ws -Descending | Select -First 1 -ExpandProperty Id 
cd ~\Downloads #move to location where you want to save the dump files 
#Add -accepteula to the sysinternals calls if you want to bypass the initial EULA prompt on new servers 
& "c:\sysinternals\pssuspend.exe" $iispid 
Write-Output "Creating memory dump for w3wp PID $workerpid" 
& "c:\sysinternals\procdump.exe" -ma $workerpid 
& "c:\sysinternals\pssuspend.exe" $iispid -r 

出力は次のようになります:

PS> & "\\dfshare\sysinternals\pssuspend.exe" $iispid 

PsSuspend v1.06 - Process Suspender 
Copyright ⌐ 2001-2003 Mark Russinovich 
Sysinternals 

Process 49836 suspended. 

PS> & "\\dfshare\sysinternals\procdump.exe" -ma 98340 

ProcDump v8.2 - Sysinternals process dump utility 
Copyright (C) 2009-2016 Mark Russinovich and Andrew Richards 
Sysinternals - www.sysinternals.com 

[01:03:24] Dump 1 initiated: C:\Users\gbray\Downloads\w3wp.exe_161230_010324.dmp 
[01:03:29] Dump 1 writing: Estimated dump file size is 19347 MB. 
[01:05:14] Dump 1 complete: 19350 MB written in 109.8 seconds 
[01:05:14] Dump count reached. 

PS> & "\\dfshare\sysinternals\pssuspend.exe" $iispid -r 

PsSuspend v1.06 - Process Suspender 
Copyright ⌐ 2001-2003 Mark Russinovich 
Sysinternals 

Process 49836 resumed. 

次のPowerShellスクリプトは、最大ワーキングセットとのw3wpプロセスのメモリダンプを作成するために、管理コンソールで実行することができます私は他のどのような問題がiissvcsプロセスを中断するか分からないので、メモリダンプが作成された後でiisresetを実行するのが最善の方法かもしれません。

+0

http://によるとmyitforum.com/myitforumwp/2017/05/17/sysinternals-updates-procdump-autoruns-bginfo-livekd-process-monitor-process-explorer/これは、ProcDump v9でも扱います –

関連する問題