Windows 凍結的進階疑難解答
本文說明如何針對 Windows 計算機和伺服器上的凍結問題進行疑難解答。 它也提供收集數據的方法,可協助系統管理員或軟體開發人員診斷、識別及修正這些問題。
注意
本文提及的協力廠商產品是由與 Microsoft 無關的獨立廠商所製造。 Microsoft 不以默示或其他方式,提供與這些產品的效能或可靠性有關的擔保。
適用於: Windows 10
識別問題
- 哪個計算機正在凍結? 例如,受影響的計算機是實體伺服器或虛擬伺服器。
- 凍結時會發生什麼作業? 例如,當您關閉時,就會發生此問題。
- 錯誤發生的頻率為何? 例如,此問題會在晚上 7 點發生。
- 此凍結發生在多少部計算機上? 例如,所有計算機或只有一部計算機。
針對凍結問題進行疑難解答
若要針對凍結問題進行疑難解答,請檢查您計算機的目前狀態,並遵循下列其中一種方法。
針對仍在凍結狀態執行的計算機
如果實體計算機或虛擬機仍然凍結,請使用下列一或多個方法來進行疑難解答:
- 嘗試透過遠端桌面連線存取電腦。
- 使用網域帳戶或本機系統管理員帳戶,使用硬體製造商的遠端訪問解決方案登入計算機。 例如,Dell 遠端訪問卡 (DRAC)、HP 整合式燈出 (iLo) 或 IBM 遠端監督器適配卡 (RSA)。
- 測試對計算機的 Ping。 尋找已捨棄的封包和高網路等待時間。
- 存取系統管理共用,例如 \\ServerName\c$。
- 按 Ctrl+Alt+Delete 並檢查回應。
- 嘗試使用 Windows 遠端管理工具。 例如,計算機管理、伺服器管理員 和 Wmimgmt.msc。
對於不再凍結的計算機
如果實體計算機或虛擬機凍結,但現在處於良好狀態,請使用下列一或多個方法來進行疑難解答。
實體計算機
從發生問題的電腦上檢閱系統和應用程序記錄。 檢查相關事件識別碼的事件記錄檔:
- 應用程式事件記錄檔:應用程式錯誤,這表示當機或相關的系統程式
- 系統事件記錄檔、重大系統服務的服務控制管理員錯誤事件標識碼
- 來源 Srv/Server 的錯誤事件識別碼 2019/2020
執行
perfmon /report
來產生系統診斷報告。
針對虛擬機
- 從發生問題的計算機檢閱系統和應用程式記錄檔。
- 執行
perfmon /report
來產生系統診斷報告。 - 在虛擬管理監視工具中檢查系統的歷程記錄。
收集凍結問題的數據
若要收集伺服器凍結的數據,請檢查下表,並使用一或多個建議的方法。
計算機類型和狀態 | 資料收集方法 |
---|---|
處於凍結狀態執行的實體計算機 | 使用記憶體轉儲檔案來收集數據。 或使用方法 2、3 或 4。 本節稍後會列出這些方法。 |
不再凍結的實體計算機 | 使用方法 1、2、3 或 4。 本節稍後會列出這些方法。 並使用 集區監視器收集數據。 |
處於凍結狀態執行的虛擬機 | Hyper-V 或 VMware: 使用記憶體轉儲檔案收集處於凍結狀態之虛擬機的數據。 XenServer:使用方法 1、2、3 或 4。 本節稍後會列出這些方法。 |
不再凍結的虛擬機 | 使用方法 1、2、3 或 4。 本節稍後會列出這些方法。 |
方法 1:記憶體轉儲
重要
請仔細依照本節中的步驟執行。 如果您未正確修改登錄,可能會發生嚴重問題。 在修改之前,備份登錄以供還原,以免發生問題。
當電腦意外停止時,完整的記憶體轉儲檔案會記錄系統記憶體的所有內容。 完整的記憶體轉儲檔案可能包含收集記憶體轉儲檔案時所執行進程的數據。
如果計算機不再凍結且現在處於良好狀態,請使用下列步驟來啟用記憶體轉儲,以便在凍結問題再次發生時收集記憶體轉儲。 如果虛擬機仍在處於凍結狀態,請使用下列步驟來啟用和收集記憶體轉儲。
注意
如果您的電腦上已啟用重新啟動功能,例如 Compaq 電腦中的自動系統重新啟動 (ASR) 功能,請將其停用。 此設定通常會在 BIOS 中找到。 啟用此功能后,如果 BIOS 未從作業系統偵測活動訊號,則會重新啟動電腦。 重新啟動可能會中斷傾印程式。
請確定計算機已設定為取得完整的記憶體轉儲檔案。
- 移至 [ 執行 ] 並輸入 Sysdm.cpl,然後按 Enter。
- 在 [系統屬性] 的 [進階] 索引標籤上,選取 [效能>設定>進階]。 選取 [變更 ] 以檢查或變更虛擬記憶體。
- 返回啟動和復原中的系統屬性>進階>設定。
- 在 [ 寫入偵錯資訊 ] 區段中,選取 [ 完成記憶體轉儲]。
- 選取 [ 覆寫任何現有的檔案]。
- 請確定系統磁碟驅動器上有一個分頁檔案(pagefile.sys),而且它至少超過已安裝的 RAM 100 MB(初始和大小上限)。
- 請確定系統磁碟驅動器上的可用空間比實體 RAM 更多。
若要允許系統使用鍵盤產生傾印檔案,請啟用
CrashOnCtrlScroll
登錄值。開啟註冊表編輯器,然後找出下列登錄機碼:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\i8042prt\Parameters
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\kbdhid\Parameters
在兩個登錄機碼中建立下列
CrashOnCtrlScroll
登錄專案:- 值名稱:
CrashOnCtrlScroll
- 數據類型: REG_DWORD
- 值:1
- 值名稱:
關閉註冊表編輯器,然後重新啟動計算機。
在執行舊版 Windows 的某些實體電腦上,您可能會從DRAC、iLo 或 RSA 等 Web 介面功能產生無法運作的中斷(NMI)。 不過,根據預設,此設定將會停止系統,而不需要建立記憶體轉儲。
注意
針對目前支援的 Windows 版本,
NMICrashDump
不再需要登錄機碼。 NMI 會導致 記憶體傾印數據收集之後的停止錯誤。當計算機顯示問題時,按住右 Ctrl 鍵,然後按兩次滾動鎖鍵來產生記憶體轉儲檔案。
注意
根據預設,傾印檔案位於下列路徑: %SystemRoot%\MEMORY。DMP。
方法 2:數據理智檢查
使用傾印檢查公用程式 (Dumpchk.exe) 讀取記憶體轉儲檔案。 它也可以確認檔案已正確建立,且未損毀或無效。
瞭解如何使用 Dumpchk.exe 來檢查您的傾印檔案:
方法 3:效能監視器
您可以使用 Windows 效能監視器 來檢查您執行的程式如何即時影響電腦的效能,以及收集記錄數據以供稍後分析。 若要在本機和遠端系統上建立性能計數器和事件追蹤記錄集合,請在命令提示字元中以系統管理員身分執行下列命令:
Logman create counter LOGNAME_Long -u DOMAIN\USERNAME * -f bincirc -v mmddhhmm -max 500 -c "\\COMPUTERNAME\LogicalDisk(*)\*" "\\COMPUTERNAME\Memory\*" "\\COMPUTERNAME\Network Interface(*)\*" "\\COMPUTERNAME\Paging File(*)\*" "\\COMPUTERNAME\PhysicalDisk(*)\*" "\\COMPUTERNAME\Process(*)\*" "\\COMPUTERNAME\Redirector\*" "\\COMPUTERNAME\Server\*" "\\COMPUTERNAME\System\*" "\\COMPUTERNAME\Terminal Services\*" "\\COMPUTERNAME\Processor(*)\*" "\\COMPUTERNAME\Cache\*" -si 00:05:00
Logman create counter LOGNAME_Short -u DOMAIN\USERNAME * -f bincirc -v mmddhhmm -max 500 -c "\\COMPUTERNAME\LogicalDisk(*)\*" "\\COMPUTERNAME\Memory\*" "\\COMPUTERNAME\Network Interface(*)\*" "\\COMPUTERNAME\Paging File(*)\*" "\\COMPUTERNAME\PhysicalDisk(*)\*" "\\COMPUTERNAME\Process(*)\*" "\\COMPUTERNAME\Redirector\*" "\\COMPUTERNAME\Server\*" "\\COMPUTERNAME\System\*" "\\COMPUTERNAME\Terminal Services\*" "\\COMPUTERNAME\Processor(*)\*" "\\COMPUTERNAME\Cache\*" -si 00:00:10
然後,您可以執行下列命令來啟動或停止記錄:
logman start LOGNAME_Long / LOGNAME_Short
logman stop LOGNAME_Long / LOGNAME_Short
效能監視器 記錄位於路徑:C:\PERFLOGS。
收集數據的其他方法
使用記憶體轉儲收集處於凍結狀態之實體計算機的數據
警告
請仔細依循本節中的步驟。 如果您未正確修改登錄,可能會發生嚴重問題。 在修改之前,備份登錄以供還原,以免發生問題。
如果實體計算機仍在處於凍結狀態,請遵循下列步驟來啟用和收集記憶體轉儲:
請確定計算機已設定為取得完整的記憶體轉儲檔案,而且您可以透過網路加以存取。
注意
如果無法透過網路存取受影響的計算機,請嘗試透過 NMI 產生記憶體轉儲檔案。 如果下列某些設定不合格,動作的結果可能不會收集記憶體轉儲檔案。
嘗試以任何方式存取電腦的桌面。
注意
如果無法存取 OS,請嘗試從遠端存取電腦上的註冊表編輯器。 然後,您可以檢查電腦目前設定的記憶體轉儲檔案和頁面檔案類型。
從最好位於相同網路和子網的遠端計算機,移至 [註冊表編輯器>連線網络登錄]。 然後,連線到受影響的計算機,並確認下列設定:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\CrashControl\CrashDumpEnabled
請確定 CrashDumpEnabled 登錄專案為 1。
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\CrashControl\NMICrashDump
在某些實體伺服器上,如果
NMICrashDump
登錄專案存在且其值為 1,您可能會利用來自 DRAC、iLo 和 RSA 等遠端管理提供者的 NMI。HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Memory Management\PagingFiles and ExistingPageFiles
如果登錄專案的值
Pagefile
是由系統管理,大小將不會反映在登錄中。 例如,?:\pagefile.sys)
如果自訂頁面檔案,大小將會反映在登入中,例如
?:\pagefile.sys 1024 1124
。 在此範例中,1024 是初始大小,1124 是大小上限。注意
如果大小未反映在登錄中,請嘗試存取頁面檔案所在的系統管理共用。 例如, \\ServerName\C$。
請確定電腦上的系統磁碟驅動器上有一個分頁檔案(pagefile.sys),而且至少比已安裝的 RAM 有 100 MB。
請確定電腦上的硬碟空間比實體 RAM 還多。
啟用電腦上的 CrashOnCtrlScroll 登錄值,讓系統能夠使用鍵盤產生傾印檔案。
從遠端電腦,最好位於相同的網路和子網中,移至 [註冊表編輯器>連線網络登錄]。 線上到受影響的電腦,並找出下列登錄機碼:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\i8042prt\Parameters
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\kbdhid\Parameters
在兩個登錄機碼中建立下列
CrashOnCtrlScroll
登錄專案:數值名稱:數據類型:
CrashOnCtrlScroll
REG_DWORD 值: 1關閉註冊表編輯器,然後重新啟動計算機。
當計算機顯示問題時,按住右 Ctrl 鍵,然後按兩次 Scroll Lock 鍵來產生記憶體轉儲。
注意
根據預設,傾印檔案位於路徑: %SystemRoot%\MEMORY。DMP。
使用集區監視器收集不再凍結之實體計算機的數據
集區監視器會依集區類型和傳入 ExAllocatePoolWithTag 呼叫的標記,顯示配置數目和未處理的位元組數目。
如需詳細資訊,請參閱 使用PoolMon尋找內核模式記憶體流失 和 PoolMon範例。
使用記憶體轉儲收集處於凍結狀態之虛擬機的數據
針對執行虛擬機器的應用程式,使用下列其中一種方法。
Microsoft Hyper-V
您也可以透過 Debug-VM Cmdlet 使用內建 NMI 功能來偵錯並取得記憶體轉儲。
若要偵錯 Hyper-V 上的虛擬機,請在 Windows PowerShell 中執行下列 Cmdlet:
Debug-VM -Name "VM Name" -InjectNonMaskableInterrupt -ComputerName Hostname
VMware
您可以使用 VMware 快照集或暫停狀態,並擷取相當於完整記憶體轉儲檔案的記憶體轉儲檔案。 使用 VMware 的 檢查點至核心工具 (vmss2core) 將暫止 (.vmss
) 和快照集 (.vmsn
) 狀態檔案轉換為傾印檔案。 然後使用標準 Windows 偵錯工具分析檔案。
注意
使用 Microsoft 支援服務 時,您應該使用 VMware 的檢查點至核心工具 (vmss2core) 將 VMware 快照集轉換為傾印檔案,再將其上傳至Microsoft。 如果您遇到快照轉換的任何問題,請連絡 VMware 以取得支援。
Citrix XenServer
記憶體傾印程式是按右 Ctrl+捲動鎖定+捲動鎖定鍵盤組合所發生的。 如需詳細資訊,請參閱如何從 Citrix 的 XenServer 上執行的 Windows 虛擬機觸發記憶體傾印的方法 1。
Windows Server 中系統磁碟驅動器的空間限制
在 Windows Server 上,您可能沒有足夠的可用磁碟空間,無法在系統磁碟區上產生完整的記憶體轉儲檔案。
如果系統磁碟驅動器沒有足夠的空間,則有第二個選項。 您可以使用登錄 DedicatedDumpFile
專案。 如需詳細資訊,請參閱 設定記憶體轉儲的目的地路徑。
如需詳細資訊,請參閱 如何使用 DedicatedDumpFile 登錄值來克服系統磁碟驅動器的空間限制。
協力廠商連絡資訊免責聲明
Microsoft 提供協力廠商連絡資訊,以協助您尋找有關此主題的其他資訊。 此連絡資訊可能會變更而不另行通知。 Microsoft 不保證協力廠商連絡資訊的準確性。
協力廠商資訊免責聲明
本文提及的協力廠商產品是由與 Microsoft 無關的獨立廠商所製造。 Microsoft 不以默示或其他方式,提供與這些產品的效能或可靠性有關的擔保。