1. CPTS介绍
云性能测试服务(Cloud Performance Test Service)是一项为基于HTTP/HTTPS/TCP等协议构建的云应用提供性能测试的服务。
服务支持快速模拟大规模并发用户的业务高峰场景,可以很好的支持报文内容和时序自定义、多事务组合的复杂场景测试,测试完成后会为您提供专业的测试报告呈现您的服务质量。
2. 整体方案
今天我们用CPTS做一个http的并发测试。测试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文件服务器访问示意:
直接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使用较为方便,对于典型的应用服务协议能够很方便的运行测试,免去了自己线下构建测试系统的工作,省时省力。