Linux服务器CPU满负载压力测试&&温度检测
本次测试,测试环境是Centos7.6_X86_64,下载的RPM包是stress-1.0.4-16.el7.x86_64.rpm、lm_sensors-libs-3.4.0-6.20160601.el7.x86_64.rpm以及lm_sensors-3.4.0-6.20160601.el7.x86_64.rpm
下载stress RPM包
- 进入Linux的RPM包网址:RPM Resource
- 搜索框内输入 stress,找到与系统对应的RPM包,点击下载即可
下载lm_sensors RPM包
- 进入Linux的RPM包网址:RPM Resource
- 搜索框内输入 lm_sensors以及lm_sensors-libs,找到与系统对应的RPM包,点击下载即可
安装RPM包
将下载好的RPM包拷贝到/root/目录下,分别执行rpm -ivh 命令安装即可
>>rpm -ivh stress-1.0.4-16.el7.x86_64.rpm
>>rpm -ivh lm_sensors-libs-3.4.0-6.20160601.el7.x86_64.rpm
>>rpm -ivh lm_sensors-3.4.0-6.20160601.el7.x86_64.rpm
编写压力测试的Shell脚本
- 编写压力测试的Shell脚本:cpustress
#!/bin/shValue=1FLAG="fail"#增加rc.local的权限,在centos7下权限较低functionProgressBar(){mark=''for((ratio=0;${ratio}<=100;ratio+=5))dosleep0.2printf"progress:[%-40s]%d%%\r""${mark}""${ratio}"mark="##${mark}"doneecho}#判断系统是否为centos 7,是则修改自启动配置if[-f"/etc/redhat-release"];then#检查stress命令是否安装filename_stress="/usr/bin/stress"if[-e"$filename_stress"];then#修改/etc/crontab文件echo"stress has installed!"elseecho"Err: stress has not installed! Please install the stress-rpm now!"exitfiCPUNUM=`cat /proc/cpuinfo |grep"processor"|wc-l`#echo "CPUNUM:"$CPUNUMletRealCPUNUM=$CPUNUMecho"CPUPROCESSORNUMS(CPU逻辑总数[物理核数X每个物理核的逻辑核数X每个逻辑核的线程数]):"$RealCPUNUMecho-e"\033[035m*****************************************\033[0m"echo-e"\033[036m* CPU满负载测试 \033[0m"echo-e"\033[034m* q : 退出 \033[0m"echo-e"\033[035m*****************************************\033[0m"#用户输入选择input=""while:doread-r-p"*输入测试所需时间(以小时为单位)后回车: " input
if[[$input=~ ^[0-9]+$ ]];thenFLAG="OK"elif[$input=='q'];thenFLAG="QUIT"elseFLAG="ERR"ficase$FLAGin"OK")#启动服务echo"StressTime:"$input"h"letTimeSecond=$input*60*60
#设置进度条
ProgressBar
stress --cpu$RealCPUNUM--timeout$TimeSecondbreak;;"QUIT")echo"quit success!"break;;
*)echo"*请输入有效的数字:";;esacdonefi
编写记录压力测试日志的Shell脚本
1.编写记录压力测试日志的Shell脚本:watchCPUStatus
#!/bin/shValue=1FLAG="fail"PrintFLAG=0#增加rc.local的权限,在centos7下权限较低functionProgressBar(){mark=''for((ratio=0;${ratio}<=100;ratio+=5))dosleep0.2printf"progress:[%-40s]%d%%\r""${mark}""${ratio}"mark="##${mark}"doneecho}functionprint_log2(){if[$PrintFLAG-eq0];then
mpstat -P ALL $1>>"/root/cpu_usage/$str_filename.log"&PrintFLAG=1fi}#获取时间作为log的文件名functionprint_log(){while:do#根据日期时间创建文件名str_file="CPU_usage"str_datename=$(date +%Y%m%d)_$(date +%H)str_filename=$str_file$str_datename#添加换行符echo"================== Monitor Message Start ==================">>"/root/cpu_usage/$str_filename.log"&
sensors >>"/root/cpu_usage/$str_filename.log"&
print_log2 $1echo>>"/root/cpu_usage/$str_filename.log"&sleep$1done}#判断系统是否为centos 7,是则修改自启动配置if[-f"/etc/redhat-release"];then#生成log的文件夹以及文件名mkdir cpu_usage &CPUNUM=`cat /proc/cpuinfo |grep physical |sort-n|uniq|wc-l`#echo "CPUNUM:"$CPUNUMletRealCPUNUM=$CPUNUM-$Valueecho"RealCPUNUM:"$RealCPUNUMecho-e"\033[035m*****************************************\033[0m"echo-e"\033[036m* CPU满负载&&硬件实时监测 \033[0m"echo-e"\033[034m* q : 退出 \033[0m"echo-e"\033[035m*****************************************\033[0m"#用户输入选择PrintTimeInterval=""while:doread-r-p"*输入打印信息的时间间隔(以秒为单位)后回车: " PrintTimeInterval
if[[$PrintTimeInterval=~ ^[0-9]+$ ]];thenFLAG="OK"elif[$PrintTimeInterval=='q'];thenFLAG="QUIT"elseFLAG="ERR"ficase$FLAGin"OK")#启动服务echo"###PrintTimeInterval:"$PrintTimeInterval"s"echo"###CPU占用率以及硬件温度信息打印至/root/cpu_usage/下面的log日志,了解详情请前往此目录下查看log文件"echo"###如需停止相关信息打印,请按Ctrl+C停止即可"# 打印日志
print_log $PrintTimeIntervalbreak;;;"QUIT")echo"quit success!"break;;
*)echo"*请输入有效的数字:";;esacdonefi
2.查看压力测试的信息内容
进入/root/cpu_usage/文件夹下,查看具体的压力信息
版权归原作者 人生三渡 所有, 如有侵权,请联系我们删除。