Linux-提高CPU、内存利用率shell脚本

海哥  金牌会员 | 2024-6-15 02:16:10 | 显示全部楼层 | 阅读模式
打印 上一主题 下一主题

主题 535|帖子 535|积分 1605

目次

1、提升CPU利用率
(1)构造CPU达到100%
(2) 结束下令
2、提高内存利用率
可以申请的内存
申请内存空间:
完成后释放内存:
3、 利用ChaosBlade工具
cpu注入:
内存注入:

1、提升CPU利用率

(1)构造CPU达到100%

for i in `seq 1 $(cat /proc/cpuinfo |grep "physical id" |wc -l)`; do dd if=/dev/zero of=/dev/null & done
(2) 结束下令

pkill -9 dd

以5核的linux为例,下面为实例的shell代码:
  1. #!/bin/bash
  2. read -p "请输入一个数字(0:停止;8:CPU80%;10:CPU100%):" num
  3. if [ $num -eq 8 ]; then
  4.     pkill -9 dd
  5.     for i in $(seq 1 $(cat /proc/cpuinfo | grep "physical id" | wc -l | awk '{print $1-1}')); do
  6.         dd if=/dev/zero of=/dev/null &
  7.     done
  8. elif [ $num -eq 10 ]; then
  9.     pkill -9 dd
  10.     for i in $(seq 1 $(cat /proc/cpuinfo | grep "physical id" | wc -l)); do
  11.         dd if=/dev/zero of=/dev/null &
  12.     done
  13. elif [ $num -eq 0 ]; then
  14.     pkill -9 dd
  15. else
  16.     echo "无效的输入"
  17. fi
复制代码
2、提高内存利用率

可以申请的内存

首先,判断需要申请多少内存
用top下令或free下令查看服务器的cpu和内存利用情况。
利用top/sar -r查看内存利用率
申请内存空间:

  1. #!/bin/bash
  2. mkdir /tmp/memory
  3. mount -t tmpfs -o size=8192M tmpfs /tmp/memory
  4. dd if=/dev/zero of=/tmp/memory/block
复制代码
完成后释放内存:

  1. #!/bin/bash
  2. rm /tmp/memory/block
  3. umount /tmp/memory
  4. rmdir /tmp/memory
复制代码
3、 利用ChaosBlade工具

媒介:
本文先容一款开源的故障注入工具chaosblade,该工具本来由阿里研发,现已开源;工具特点:功能强大,利用简单。

该工具故障注入包罗:cpu,内存,磁盘io,磁盘占用,网络注入等
简写:
status --> s;   destroy -->d;     create --> c;
利用方法:
工具获取连接:https://github.com/chaosblade-io/chaosblade/releases
将工具上传至待测机器并解压
进入解压的工具目次,实验对应注入下令
./blade create cpu load --cpu-list 0-3 --cpu-percent 80
实验成功,会返回一个id,如需撤销故障注入,实验如下下令
./blade d {id}

查询曾经注入的故障id,便于删除
./blade s --type c

磁盘注入:


参数先容:
--path string     需要填充的目次,默认值 /
--size string      需要填充的文件巨细,单位M,取值整数,例如:--size 1024
--reserve string   保留磁盘巨细,单位MB,取值为不包罗单位的正整数,例如:--reserve 1024。如果size、percent、reserve参数都存在,优先级:percent > reserve > size.。
--percent string   指定磁盘利用率,如 --percent 80
--retain-handle    是否保留填充    (亲测,只要不加timeout参数,默认保留填充,只有磁盘空间注入有此参数)       
--timeout string   设定运行时长,单位秒    (此参数为通用参数,各种故障场景几乎都可以加)
例如:
blade create disk fill --path /home --percent 80 --retain-handle   填充home目次80%的利用空间
blade create disk fill --path /home --size 200 --retain-handle     填充home目次200M
blade create disk fill --path /home --reserve 200 --retain-handle   仅保留/home目次200M
cpu注入:


blade create cpu load --cpu-list 0,1 --cpu-percent 80     --加压0,1两个焦点,负载到80%
blade create cpu load --cpu-count 3                  --将3个焦点加压
blade create cpu fullload                           --cpu满载
 blade create cpu load --cpu-list 0,1,2 --timeout 100     --将0,1,2三个焦点加压100s,不带timeout参数默认不停加压

内存注入:



blade create mem load --mode ram --mem-percent 80           --占用80%的ram内存
blade create mem load --mode ram --mem-percent 80 --rate 100  --占用80%ram内存,占用速率100M每秒,rate参数只在占用ram时生效。
blade create mem load --mode catche --reserve 100    --占用catche内存,保留100M内存,速率100M/S,不加mode参数,默认值为catche,采用ram占用必须加mode参数。
注:内存注入满了会导致blade故障无法消除,推荐加percent参数;不利用任何参数会默认将内存加满,利用需审慎。

实验成功,会返回一个id,如需撤销故障注入,实验如下下令
./blade d {id}

(工具去网上搜下下载即可,需要的话可关注我后私聊)

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复

使用道具 举报

0 个回复

正序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

海哥

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表