Rss & SiteMap

康柏仕电脑学院 index.asp

康柏仕电脑学院--台湾正航ERP软件售后技术论坛,客服热线0769-81158210
共1 条记录, 每页显示 10 条, 页签: [1]
[浏览完整版]

标题:解决.Net Runtime Optimization Service占用CPU的问题

1楼
轻轻风聆 发表于:2023/10/27 15:36:10

    今天接到云主机的告警,说CPU占用率长期在100%,服务器是windows2012的系统,登录后看有个.Net Runtime Optimization Service的进程把CPU全占了,之前没见过这个进程,经查询了解这是触发了.NET的最佳化服务,这个最佳化服务在安装完.NET之后还会继续预编译那些高优先级的assemblies,然后等到系统空闲的时候再去处理那些低优先级的assemblies,处理完了会自动结束,但是这程序什么时候开始处理什么时候处理结束就不可知了,后查询了解到有几种方法解决这个问题。

1、用脚本加快优化服务。

新建个文本文件将下面的脚本复制进去,将文件重命名为netruntime.ps1。文件名随便取,扩展名要改为.ps1。保存之后在文件上点击鼠标右键,选择 【使用 PowerShell 运行】,等程序执行完成后.Net Runtime Optimization Service就没有了,CPU占和率也恢复到了正常水平。脚本执行时间会有点长,我2C4G的云主机运行大概跑了2个小时。

 

 

# 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"
}

 

2、通过命令行关闭mscorsvw.exe

打开cmd窗口(管理员身份运行),在命令提示符中键入:ngen.exe executequeueditems

 

3、禁用 Microsoft .NET Framework NGEN 服务

1、用快捷键win+R打开运行框,在运行框中输入services.msc 后回车打开服务窗口,找到Microsoft .NET Framework NGEN服务项,双击进入属性窗口,在打开的属性窗口中,单击“停止”按钮,并将启动类型设置为“禁用”,单击确定即可。

 

我是用第一种方法把问题解决的,2、3种方法在此一并记录下,也许以后用的上。

[此贴子已经被作者于2023/10/27 15:37:56编辑过]
共1 条记录, 每页显示 10 条, 页签: [1]

Copyright ©2005 - 2023 康柏仕电脑学院 清理缓存

正航ERP软件-企业ERP最佳选择! http://www.chidg.com  0769-81158210
Powered By Dvbbs Version 8.3.0
Processed in .01563 s, 2 queries.