Q1:如何压测云服务器 CPU?

A:

Super Pi(super_pi)是很受欢迎的测试 CPU 的工具,下面是在 linux 环境下运行 super_pi 的步骤,以 Centos6.7 为例,具体步骤如下:

(1) 下载 super_pi

yum install -y wget
wget http://tools.nos-eastchina1.126.net/super_pi.tar.bz2

(2)解压下载的文件:

tar -jxvf super_pi.tar.bz2

(3)安装依赖包

yum install -y ld-linux.so.2

(4)开始测试

./super_pi 位数

表示要算 2 的多少次方位,如通常要算小数点后 1M 位(2^20次方)。 最大到 25 次方,若设置再大的值,会自动缩小到该值。

以 25 为例:

./super_pi 25

此时可以查看 CPU 使用情况,如果是多核可以多个 ./super_pi 25 并发测试。

Attention

如果执行时报错,可以下载super-pi源代码编译安装。

  1. 解压:tar -zxvf pi_css5_src.tgz
  2. 安装依赖包:yum install glibc-static
  3. 修改 Makefile 文件: CFLAGS += -march=i686 -malign-double 改为 CFLAGS += -malign-double
  4. 编译、安装:make; make install
  5. 开始测试:./pi_css5 $((1<<25))

Q2:如何压测云服务器内存?

A:

Memtester 是常用的内存压测工具,主要是捕获内存错误和一直处于很高或者很低的坏位,其测试的主要项目有随机值,异或比较,减法,乘法,除法,与或运算等,以Centos6.7为例,具体操作步骤如下:

(1) 下载 memtester

yum install -y wget
yum install -y gcc
wget http://tools.nos-eastchina1.126.net/memtester-4.3.0.tar.gz

(2) 解压下载的文件

tar -zxvf memtester-4.3.0.tar.gz

进入解压后的目录,编译安装软件:

make 
make install

(3) 开始测试

2G 内存,测试5次:

./memtester 2G 5

查看内存使用情况。

Q3:如何压测站点性能?

A:

站点压力测试的相关工具有很多,这里主要介绍 siege,首先我们需要去官网下载源码包进行编译安装,具体如下:

(1)下载安装,需要安装 gcc 包,以下以 CentOS7 为例进行安装使用的讲解

yum -y install gcc openssl openssl-devel
wget -c http://download.joedog.org/siege/siege-3.1.4.tar.gz
tar zxvf  siege-3.1.4.tar.gz
cd siege-3.1.4
./configure --prefix=/usr/local/siege --with-ssl=/usr/include/openssl/
make && make install

编译的时候增加 OpenSSL 可以对 HTTPS 站点进行压测,我们为了测试方便可以设置以下环境变量

echo "PATH=$PATH:/usr/local/siege/bin" >> /etc/bashrc
source /etc/bashrc

(2)参数

常用的参数:

  • -c 200 并发200个用户
  • -r 150 重复循环150次
  • -f file 任务的URL列表

其它实用参数:

  • -i 随机 URL ,默认是从列表的上面到下面来打压力
  • -b 进行压力测试,不进行延时
  • -t 持续时间,即测试持续时间,在NUM时间后结束,单位默认为分

(3)压测案例:

测试1:指定列表

siege -c 200 -r 10 -f /opt/url.txt -b -i

结果

HTTP/1.1 200   0.30 secs:    9604 bytes ==> GET  /post/48192.html
HTTP/1.1 200   0.29 secs:    9604 bytes ==> GET  /post/48192.html
HTTP/1.1 200   0.29 secs:    9604 bytes ==> GET  /post/48192.html
HTTP/1.1 200   0.29 secs:    9604 bytes ==> GET  /post/48192.html
done.

以下是针对本次压测的输出信息,包含了例如:响应时间,请求的大小,成功传输的次数,失败次数,最长的一次请求时间,最短的一次请求时间等等内容,可以根据相关数据进行分析。

Transactions:                2000 hits
Availability:              100.00 %
Elapsed time:               24.26 secs
Data transferred:           18.32 MB
Response time:                2.28 secs
Transaction rate:           82.44 trans/sec
Throughput:                0.76 MB/sec
Concurrency:              187.81
Successful transactions:        2000
Failed transactions:               0
Longest transaction:            7.41
Shortest transaction:            0.26

LOG FILE: /usr/local/siege/var/siege.log
You can disable this log file notification by editing
/root/.siege/siege.conf and changing 'show-logfile' to false.

测试2:直接给定 URL,如下:

   siege -c 200 -r 10 -b https://www.163.com