公司一直有台服务器cpu占用很高,分析出是恒生监控程序java占用很高,且三个java程序,仅其中一个很高,要恒生解决,一直未解决,导致每周重启,我司运维都要手动进行程序相关性设置,给运维带来麻烦。 为解决运维重复劳动,拟看看是否可以脚本实现,通过对网上资料查询可通过powershell进行程序相关性设置。参考链接如下: https://www.pstips.net/setting-process-running-under-specific-cpu.html 故编写了如下powershell脚本用于实现程序自动设置cpu高的java程序相关性设置。
设置cpu运行个数.ps1脚本如下: #获取java进程,且cpu高于40%的java进程,由于机器上有三个java,且路径都一致。 $id=Get-Process | Where-Object {$.Name -eq "java"} | Where-Object {$.CPU -gt 40}
#设置前4个CPU运行,可自由配置哪些cpu运行。ProcessorAffinity(设置相似性) $id.ProcessorAffinity=15
再建立一个callpowershell.bat,用于运行powershell脚本。 powershell 设置cpu运行个数.ps1
最后,在延时启动工具上配置好callpowershell.bat延时2分钟启动。
经过以上步骤后,每周重启完毕服务器2分钟后,自动会对占用100%cpu的java进程指定cpu个数为4个。解决了运维过程中的重复劳动。