一、Stress是什么

stress是一个linux下的压力测试工具,专门为那些想要测试自己的系统,完全高负荷和监督这些设备运行的用户。

二、安装
yum install -y epel-release

yum install -y stress

三、使用指南

首先需建立测试目录,供放置写磁盘的文件。

stress各主用参数说明(-表示后接一个中划线,--表示后接2个中划线,均可用于stress后接参数,不同表达方式):

-?

--help 显示帮助信息

--version 显示软件版本信息

-t secs:

--timeout secs指定运行多少秒

--backoff usecs 等待usecs微秒后才开始运行

-c forks:

--cpu forks 产生多个处理sqrt()函数的CPU进程

-m forks

--vm forks:产生多个处理malloc()内存分配函数的进程,后接进程数量

-i forks

--io forks:产生多个处理sync()函数的磁盘I/O进程

--vm-bytes bytes:指定内存的byte数,默认值是1

--vm-hang:表示malloc分配的内存多少时间后在free()释放掉

-d :

--hdd:写进程,写入固定大小,通过mkstemp()函数写入当前目录

--hdd-bytes bytes:指定写的byte数,默认1G

--hdd-noclean:不要将写入随机ascii数据的文件unlink,则写入的文件不删除,会保留在硬盘空间。

四、测试场景举例

测试CPU负荷
输入命令:stress –c 4

增加4个cpu进程,处理sqrt()函数函数,以提高系统CPU负荷

2、内存测试

输入命令:stress –i 4 –vm 10 –vm-bytes 1G –vm-hang 100 –timeout 100s

新增4个io进程,10个内存分配进程,每次分配大小1G,分配后不释放,测试100S

3、磁盘I/O测试

输入命令:stress –d 1 --hdd-bytes 3G

新增1个写进程,每次写3G文件块

4、硬盘测试(不删除)

输入命令:stress –i 1 –d 10 --hdd-bytes 3G –hdd-noclean

新增1个IO进程,10个写进程,每次写入3G文件块,且不清除,会逐步将硬盘耗尽。

五、linux下服务器性能监控

top监控整体使用情况
各参数涵义如下:

load average:当前系统负载的平均值,后面的3个值分别为1分钟、5分钟、15分钟前进程的平均数。一般认为这个数超过CPU数目时,CPU将比较吃力地负载当前系统所包含的进程。

表示CPU的几个参数:

us:用户空间占用CPU百分比

sy:内核空间占用CPU百分比

ni:用户进程空间内改变过优先级的进程占用CPU百分比

id:空闲CPU百分比

wa:等待输入输出的cpu时间百分比

输入top后,按大写P,以CPU占用大小排序,按M,以内存占用大小排序

从应用程序的角度来看,可用内存=系统free memory+buffers+cached,其中buffers/cached是为了提高文件读取的性能,当应用程序要用到内存的时候,buffer/cached会很快地被回收

服务器I/O读写负载评估
先用top查看,wa的值标识I/O等待所占用的CPU时间的百分比,高于30%时I/O压力高。

再用iostat –x 1 10查看,如果没有该文件,要yum install systat 安装。查看%util,%idle,如果%util接近100%,说明产生的I/O请求太多,I/0系统已经满负荷,该磁盘可能存在瓶颈,%idle小于70%,I/0压力就比较大了,一般读取速度有较多的等待。

同时结合vmstat -1命令,查看b参数,表示等待资源的进程数,如等待I/O,内存等,如常时间>1,则要关注。可评估i/o读写负载。

其他系统日常管理
查看系统的cpu数:cat /proc/cpu info

监控系统状态,查看具体是哪里的压力:vmstat

proc列显示进程相关信息

r表示运行和等待CPU时间片的进程数,如长期>服务器CPU个数,说明CPU不够用了

swap表示内存交换情况

查看内存使用情况:free

查看系统进程:ps aux

打印网络连接状况:netstat –an

打印当前系统启动哪些端口:netstat –lnp

查看磁盘的使用情况和文件系统被挂载的位置:df –lh