MySQL限制CPU资源使用_压缩大文件时如何限制CPU使用率?----几种CPU资源限制方法的测试说明...
一、說明
我們的MySQL實例在備份后需要將數據打包壓縮,部分低配機器在壓縮時容易出現CPU打滿導致報警的情況,需要在壓縮文件時進行CPU資源的限制。
因此針對此問題進行了相關測試,就有了此文章。
二、測試過程
0. 正常打包
正常打包壓縮操作:
[root@mysql-test data1]$ du -sh 5555
34G 5555
[root@mysql-test data1]$ tar -czf 5555.tar.gz 5555
打包壓縮過程中的CPU占用:
1. nice 命令打包
nice 命令用于設定進程的優先級,取值范圍[-20,19],-20為最高,19為最低。
使用nice命令:
[root@mysql-test data1]$ du -sh 5555
34G 5555
[root@mysql-test data1]$ nice -n 19 tar -czf 5555.tar.gz 5555
過程中CPU占用:
第4列 NI 列為19,表示優先級,此時已經是使用了最低優先級
由于平時并沒有太多的任務進行(夜間備份期間更是如此),因此即使設置了最低優先級,依舊占用CPU較高
2. cpulimit 命令打包
cpulimit 可以為進程設置CPU使用率上限值并實時監控,若超出上限則暫停運行一段時間
使用該命令需要先進行安裝:
wget -O cpulimit.zip https://github.com/opsengine/cpulimit/archive/master.zip
unzip cpulimit.zip
cd cpulimit-master
make
sudo cp src/cpulimit /usr/bin
a. 安裝后使用如下命令測試:
cpulimit -l 60 tar -czf 5555.tar.gz 5555 # 限制進程CPU占用率上限為60%
結果如下:
cpulimit 只針對單個進程進行限制,而gzip是另一個子進程,因此無效
b. 同時限制子進程
使用cpulimit的-i參數可以同時限制其子進程的資源占用:
cpulimit -i -l 60 tar -czf 5555.tar.gz 5555
其gzip子進程也成功限制:
c. 使用進程號進行限制:
如果無法在命令上使用cpulimit,比如進程已經在跑了,還可以指定進程號進行限制:
先進行正常打包壓縮操作:
tar -czf 5555.tar.gz 5555
找到該任務的gzip進程,使用cpulimit:
[root@mysql-test data1]$ cpulimit -l 60 -p 1695
Process 1695 found
CPU使用率被限制在60%:
3. cgroups 命令集
Linux 內核提供的一種機制,利用它可以指定一組進程的資源分配,不限于CPU
該命令只在多個進程爭搶資源時才生效,因此在此不再測試,有興趣同學可自行研究,或參考最后鏈接的文章。
三、結論對比
nice 與 cgroups 命令適用于多個進程任務爭搶CPU資源時,進行資源的分配與限制;而只有單一進程任務時依舊會最大限度占用資源
cpulimit 針對單個進程生效,可以設定單個進程對CPU資源的使用率上限
四、參考文章
五、附(2017.10.31更新,感謝評論區兄弟提醒)
cpulimit命令的 -i 參數可以同時針對子進程也進行限制,無需再另外指定進程號,用法如下:
cpulimit -i -l 60 tar -czf 5555.tar.gz 5555
總結
以上是生活随笔為你收集整理的MySQL限制CPU资源使用_压缩大文件时如何限制CPU使用率?----几种CPU资源限制方法的测试说明...的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: hibernate mysql anno
- 下一篇: 二进制安全与MySQL的关系_《高可用M