|
|
|
|
|
今天發(fā)現(xiàn)服務(wù)器運行突然變得緩慢,于是打開任務(wù)管理器查看究竟,發(fā)現(xiàn)是.NET Runtime Optimization Service這個進程占用CPU 100%了。第一次看到這個進程,從字面上了解,這是個.NET運行優(yōu)化服務(wù)進程,不是什么病毒,所以心里踏實了很多,我只需要解決這個問題即可。我心想這個進程應(yīng)該是個自動化進程,也即是.NET自動優(yōu)化的進程,優(yōu)化完就自動關(guān)閉了,于是我就干等待。不過等了好一會,發(fā)現(xiàn)沒什么動靜,我就想為了不影響服務(wù)器正常運行,能不能把它給停掉。于是找了下資料,發(fā)現(xiàn)是有方法解決這個問題的。
.NET Runtime Optimization Service占CPU 100%
通過查找相關(guān)資料,發(fā)現(xiàn)這個進程是在系統(tǒng)安裝了.NET Framework 或是.NET Framework 被更新之后,觸發(fā)了.NET的最佳化服務(wù),一旦它全部處理完畢,它將會終止,不再占用資源。我們不應(yīng)該立即終止該進程,以免造成不可預(yù)測的后果,但我們可以加速該進程的運行,這是最好的解決方法。
把下面腳本保存到一個文本文件里,把文本文件擴展名改為.bat
,然后使用管理員身份運行該腳本文件,即可加快這個服務(wù)的進度。
# Script to force the .NET Framework optimization service to run at maximum speed.
$isWin8Plus = [Environment]::OSVersion.Version -ge (new-object 'Version' 6,2)
$dotnetDir = [environment]::GetEnvironmentVariable("windir","Machine") + "\Microsoft.NET\Framework"
$dotnet2 = "v2.0.50727"
$dotnet4 = "v4.0.30319"
$dotnetVersion = if (Test-Path ($dotnetDir + "\" + $dotnet4 + "\ngen.exe")) {$dotnet4} else {$dotnet2}
$ngen32 = $dotnetDir + "\" + $dotnetVersion +"\ngen.exe"
$ngen64 = $dotnetDir + "64\" + $dotnetVersion +"\ngen.exe"
$ngenArgs = " executeQueuedItems"
$is64Bit = Test-Path $ngen64
#32-bit NGEN -- appropriate for 32-bit and 64-bit machines
Write-Host("Requesting 32-bit NGEN")
Start-Process -wait $ngen32 -ArgumentList $ngenArgs
#64-bit NGEN -- appropriate for 64-bit machines
if ($is64Bit) {
Write-Host("Requesting 64-bit NGEN")
Start-Process -wait $ngen64 -ArgumentList $ngenArgs
}
#AutoNGEN for Windows 8+ machines
if ($isWin8Plus) {
Write-Host("Requesting 32-bit AutoNGEN -- Windows 8+")
schTasks /run /Tn "\Microsoft\Windows\.NET Framework\.NET Framework NGEN v4.0.30319"
}
#64-bit AutoNGEN for Windows 8+ machines
if ($isWin8Plus -and $is64Bit) {
Write-Host("Requesting 64-bit AutoNGEN -- Windows 8+")
schTasks /run /Tn "\Microsoft\Windows\.NET Framework\.NET Framework NGEN v4.0.30319 64"
}
執(zhí)行完畢再打開任務(wù)管理器,發(fā)現(xiàn).NET Runtime Optimization Service已經(jīng)沒了或者CPU不再是100%了,因為整個該進程已經(jīng)被加速完成了。
.NET Runtime Optimization Service已經(jīng)被加速完成
本文介紹了.NET Runtime Optimization Service占CPU 100%的解決方法,對于使用windows服務(wù)器的用戶來說,可能會遇到這個問題。