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包

  1. 进入Linux的RPM包网址:RPM Resource
  2. 搜索框内输入 stress,找到与系统对应的RPM包,点击下载即可
    在这里插入图片描述

下载lm_sensors RPM包

  1. 进入Linux的RPM包网址:RPM Resource
  2. 搜索框内输入 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脚本

  1. 编写压力测试的Shell脚本:cpustress
#!/bin/sh
Value=1
FLAG="fail"
#增加rc.local的权限,在centos7下权限较低
function ProgressBar(){
	mark=''
	for ((ratio=0;${ratio}<=100;ratio+=5))
	do
			sleep 0.2
			printf "progress:[%-40s]%d%%\r" "${mark}" "${ratio}"
			mark="##${mark}"
	done
	echo
}
		
#判断系统是否为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!"
	else
		echo "Err: stress has not installed! Please install the stress-rpm now!"
		exit
	fi
	
	CPUNUM=`cat /proc/cpuinfo |grep "processor"|wc -l`
	#echo "CPUNUM:"$CPUNUM
	let RealCPUNUM=$CPUNUM   
	echo "CPUPROCESSORNUMS(CPU逻辑总数[物理核数X每个物理核的逻辑核数X每个逻辑核的线程数]):"$RealCPUNUM
	echo -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 :
    do
        read -r -p "*输入测试所需时间(以小时为单位)后回车: " input
		if [[ $input =~ ^[0-9]+$ ]]; then
			FLAG="OK"
		elif [ $input=='q' ]; then
			FLAG="QUIT"
		else
			FLAG="ERR"
		fi
        case $FLAG in
            "OK")
                #启动服务
				echo "StressTime:"$input"h"
				let TimeSecond=$input*60*60
				#设置进度条
				ProgressBar 
				stress --cpu $RealCPUNUM --timeout $TimeSecond
                break
                ;;
            "QUIT")
				echo "quit success!"
                break
                ;;
            *)
            echo "*请输入有效的数字:"
                ;;
        esac
    done
fi

在这里插入图片描述

编写记录压力测试日志的Shell脚本

1.编写记录压力测试日志的Shell脚本:watchCPUStatus

#!/bin/sh
Value=1
FLAG="fail"
PrintFLAG=0
#增加rc.local的权限,在centos7下权限较低
function ProgressBar(){
	mark=''
	for ((ratio=0;${ratio}<=100;ratio+=5))
	do
			sleep 0.2
			printf "progress:[%-40s]%d%%\r" "${mark}" "${ratio}"
			mark="##${mark}"
	done
	echo
}

function print_log2(){
	if [ $PrintFLAG -eq 0 ];then
		mpstat -P ALL $1 >> "/root/cpu_usage/$str_filename.log" &
		PrintFLAG=1
	fi
}

#获取时间作为log的文件名
function print_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 $1
		echo >> "/root/cpu_usage/$str_filename.log" &
		sleep $1
	done
}
		
#判断系统是否为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:"$CPUNUM
	let RealCPUNUM=$CPUNUM-$Value    
	echo "RealCPUNUM:"$RealCPUNUM
	echo -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 :
    do
        read -r -p "*输入打印信息的时间间隔(以秒为单位)后回车: " PrintTimeInterval
		if [[ $PrintTimeInterval =~ ^[0-9]+$ ]]; then
			FLAG="OK"
		elif [ $PrintTimeInterval=='q' ]; then
			FLAG="QUIT"
		else
			FLAG="ERR"
		fi
        case $FLAG in
            "OK")
                #启动服务
				echo "###PrintTimeInterval:"$PrintTimeInterval"s"
				echo "###CPU占用率以及硬件温度信息打印至/root/cpu_usage/下面的log日志,了解详情请前往此目录下查看log文件"
				echo "###如需停止相关信息打印,请按Ctrl+C停止即可"
				# 打印日志
				print_log $PrintTimeInterval
				break;
                ;;
            "QUIT")
				echo "quit success!"
                break
                ;;
            *)
            echo "*请输入有效的数字:"
                ;;
        esac
    done
fi

在这里插入图片描述

2.查看压力测试的信息内容

进入/root/cpu_usage/文件夹下,查看具体的压力信息
在这里插入图片描述

  • 16
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值