华为云CPTS体验

1. CPTS介绍

云性能测试服务(Cloud Performance Test Service)是一项为基于HTTP/HTTPS/TCP等协议构建的云应用提供性能测试的服务。

服务支持快速模拟大规模并发用户的业务高峰场景,可以很好的支持报文内容和时序自定义、多事务组合的复杂场景测试,测试完成后会为您提供专业的测试报告呈现您的服务质量。

2. 整体方案

今天我们用CPTS做一个http的并发测试。测试demo整体结构:

测试demo

ecs服务器运行nginx文件服务 + 超高EVS卷。

cpts服务通过vpc内部的私有ip对nginx服务器发起并发rest测试。

3. 测试过程:

3.1 申请ecs,安装配置nginx

yum install epel-release

yum install nginx

nginx文件服务器配置(/etc/nginx/nginx.conf):

# For more information on configuration, see:

# * Official English Documentation: http://nginx.org/en/docs/

# * Official Russian Documentation: http://nginx.org/ru/docs/

user nginx;

worker_processes auto;

error_log /var/log/nginx/error.log;

pid /run/nginx.pid;

# Load dynamic modules. See /usr/share/nginx/README.dynamic.

include /usr/share/nginx/modules/*.conf;

events {

worker_connections 1024;

}

http {

log_format main '$remote_addr - $remote_user [$time_local] "$request" '

'$status $body_bytes_sent "$http_referer" '

'"$http_user_agent" "$http_x_forwarded_for"';

access_log /var/log/nginx/access.log main;

sendfile on;

tcp_nopush on;

tcp_nodelay on;

keepalive_timeout 65;

types_hash_max_size 2048;

include /etc/nginx/mime.types;

default_type application/octet-stream;

# Load modular configuration files from the /etc/nginx/conf.d directory.

# See http://nginx.org/en/docs/ngx_core_module.html#include

# for more information.

include /etc/nginx/conf.d/*.conf;

server {

listen 8080 default_server;

listen [::]:8080 default_server;

server_name _;

root /mnt/ultra/test/data;

# Load configuration files for the default server block.

include /etc/nginx/default.d/*.conf;

location / {

autoindex on;

}

error_page 404 /404.html;

location = /40x.html {

}

error_page 500 502 503 504 /50x.html;

location = /50x.html {

}

}

}

3.2 测试数据

nginx配置的/mnt/ultra/test/data就是测试数据的目录

里面预装4k小文件,三层目录结构,101010,每个三层目录放置了1w个随机内容小文件,共1110 directories, 10000000 files。

用tree -L 3查看类似下图这样的结构。

目录结构

nginx文件服务器访问示意:

nginx文件服务

直接get路径下的文件,则会获得文件内容的响应

3.3 测试套件(CPTS):

CPTS是使用CCE(云容器引擎)集群来运行测试套软件的,CPTS测试软件是以容器的形式跑在CCE上。

猜测CPTS测试并发能力可能就是多线程+容器的线性扩展能力,测试的控制器可能用的是k8s里面的job,一次测试任务就是在CCE上创建一个job,来管理测试的生命周期。

创建CCE集群,注意要确保和nginx ecs网络是互通的,为了省事,我们用同样的vpc subnet和安全组即可。这边感觉不太友好,用户想用CPTS就需要拥有使用CCE的知识,要跳转到CCE去创建资源,可能有人会觉得麻烦就放弃使用了。

测试资源页签

下面,我们来创建一个测试资源。

这里吐槽一下,创建时候频繁的跳转CCE(创管理节点,执行节点),创好的资源刷不出来等问题,交互上面不友好。

创建测试资源

最终创好了的测试资源

创好的测试资源

3.4 测试工程

创建一个工程,这里只要添加名字。

进入工程管理,添加一个事务。

配置事务:

首先先添加我们的三级目录和最后一级文件为随机变量

分别为1-10,1-10,1-10,1-10000

添加随机变量

设置思考时间

设置测试请求结构

配置完之后,启动调试,看看是否正确访问。

测试前的调试

3.5 开始测试

我们增加一个测试任务,然后关联刚才配置的事务,设置持续时间和并发用户数,就可以启动测试啦。

实时测试数据显示还是很漂亮的。

实时数据

下面还有抓包分析工具提供,如果应用介入了AOM和APM还能拿到其他分析数据,集成功能较好。AOM和APM后面也去体验一把,总体来说,CPTS使用较为方便,对于典型的应用服务协议能够很方便的运行测试,免去了自己线下构建测试系统的工作,省时省力。