|
|
|
|
|
今天發(fā)現(xiàn)服務(wù)器運(yùn)行突然變得緩慢,于是打開(kāi)任務(wù)管理器查看究竟,發(fā)現(xiàn)是.NET Runtime Optimization Service這個(gè)進(jìn)程占用CPU 100%了。第一次看到這個(gè)進(jìn)程,從字面上了解,這是個(gè).NET運(yùn)行優(yōu)化服務(wù)進(jìn)程,不是什么病毒,所以心里踏實(shí)了很多,我只需要解決這個(gè)問(wèn)題即可。我心想這個(gè)進(jìn)程應(yīng)該是個(gè)自動(dòng)化進(jìn)程,也即是.NET自動(dòng)優(yōu)化的進(jìn)程,優(yōu)化完就自動(dòng)關(guān)閉了,于是我就干等待。不過(guò)等了好一會(huì),發(fā)現(xiàn)沒(méi)什么動(dòng)靜,我就想為了不影響服務(wù)器正常運(yùn)行,能不能把它給停掉。于是找了下資料,發(fā)現(xiàn)是有方法解決這個(gè)問(wèn)題的。
.NET Runtime Optimization Service占CPU 100%
通過(guò)查找相關(guān)資料,發(fā)現(xiàn)這個(gè)進(jìn)程是在系統(tǒng)安裝了.NET Framework 或是.NET Framework 被更新之后,觸發(fā)了.NET的最佳化服務(wù),一旦它全部處理完畢,它將會(huì)終止,不再占用資源。我們不應(yīng)該立即終止該進(jìn)程,以免造成不可預(yù)測(cè)的后果,但我們可以加速該進(jìn)程的運(yùn)行,這是最好的解決方法。
把下面腳本保存到一個(gè)文本文件里,把文本文件擴(kuò)展名改為.bat
,然后使用管理員身份運(yùn)行該腳本文件,即可加快這個(gè)服務(wù)的進(jìn)度。
# 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í)行完畢再打開(kāi)任務(wù)管理器,發(fā)現(xiàn).NET Runtime Optimization Service已經(jīng)沒(méi)了或者CPU不再是100%了,因?yàn)檎麄€(gè)該進(jìn)程已經(jīng)被加速完成了。
.NET Runtime Optimization Service已經(jīng)被加速完成
本文介紹了.NET Runtime Optimization Service占CPU 100%的解決方法,對(duì)于使用windows服務(wù)器的用戶(hù)來(lái)說(shuō),可能會(huì)遇到這個(gè)問(wèn)題。