公司一直有臺服務器cpu佔用很高,分析出是恆生監控程序java佔用很高,且三個java程序,僅其中一個很高,要恆生解決,一直未解決,致使每週重啓,我司運維都要手動進行程序相關性設置,給運維帶來麻煩。
爲解決運維重複勞動,擬看看是否能夠腳本實現,經過對網上資料查詢可經過powershell進行程序相關性設置。參考連接以下:
https://www.pstips.net/setting-process-running-under-specific-cpu.html
故編寫了以下powershell腳本用於實現程序自動設置cpu高的java程序相關性設置。html
設置cpu運行個數.ps1腳本以下:
#獲取java進程,且cpu高於40%的java進程,因爲機器上有三個java,且路徑都一致。
$id=Get-Process | Where-Object {$.Name -eq "java"} | Where-Object {$.CPU -gt 40}java
#設置前4個CPU運行,可自由配置哪些cpu運行。ProcessorAffinity(設置類似性)
$id.ProcessorAffinity=15shell
再創建一個callpowershell.bat,用於運行powershell腳本。
powershell 設置cpu運行個數.ps1服務器
最後,在延時啓動工具上配置好callpowershell.bat延時2分鐘啓動。運維
通過以上步驟後,每週重啓完畢服務器2分鐘後,自動會對佔用100%cpu的java進程指定cpu個數爲4個。解決了運維過程當中的重複勞動。ide