近期有Windows服务器发生CPU使用率达100%时,因为此时已无法远程进入操作系统查看是具体是那个进程的CPU使用率高,只能重启而无法找到发生异常的进程,故在尝试寻找有关解决方案。
一、使用定时任务每分钟获取一次使用CPU前10的进程列表信息保存备查。
Powershell.exe -Command " (Get-Date).DateTime ; Get-Process | select *,@{N='CPUPC';E={[float]$_.cpu}}|sort CPUPC -desc|select Id,name,CPU -first 10" >> d:\proccpu.txt
二、使用BES来限制进程CPU的使用率
1.到http://mion.faireal.net/BES/下载
2.解压后使用管理员权限运行bes.exe.
点击TARGET来选择要限制的进程。
然后选择菜单:“运行"->“限制率”,拖动下图中的图标来限制进程最高CPU使用率。
设置完关闭,完成后就会显示下面的信息:
三、使用ThreadMaster
1.到http://threadmaster.tripod.com/下载
2.将下载后包解压后运行Install.cmd将它安装成系统服务
3.该软件没有图形界面,运行需要修改注册,主要需要修改以下几个内容,修改后在服务管理重启服务即可。
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\ThreadMaster\Parameters]CPUThresholdPct# 这个是设置一般进程最大CPU占用率的地方,有效值 3-100[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\ThreadMaster\Parameters\Applications]#这里可以针对具体进程限制其CPU占用[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\ThreadMaster\Parameters\Exceptions]# 这里可以设置不受上面占用率限制影响的进程列表,缺省已经有一些系统进程在里面了,也可以自己进行修改
4.卸载方法。
#运行cmd.execd ThreadMaster目录net stop threadmasterThreadMast -remove删除ThreadMaster目录