1. CPTS介紹
云性能測(cè)試服務(wù)(Cloud Performance Test Service)是一項(xiàng)為基于HTTP/HTTPS/TCP等協(xié)議構(gòu)建的云應(yīng)用提供性能測(cè)試的服務(wù)。
服務(wù)支持快速模擬大規(guī)模并發(fā)用戶的業(yè)務(wù)高峰場(chǎng)景,可以很好的支持報(bào)文內(nèi)容和時(shí)序自定義、多事務(wù)組合的復(fù)雜場(chǎng)景測(cè)試,測(cè)試完成后會(huì)為您提供專業(yè)的測(cè)試報(bào)告呈現(xiàn)您的服務(wù)質(zhì)量。
2. 整體方案
今天我們用CPTS做一個(gè)http的并發(fā)測(cè)試。測(cè)試demo整體結(jié)構(gòu):

ecs服務(wù)器運(yùn)行nginx文件服務(wù) + 超高EVS卷。
cpts服務(wù)通過(guò)vpc內(nèi)部的私有ip對(duì)nginx服務(wù)器發(fā)起并發(fā)rest測(cè)試。
3. 測(cè)試過(guò)程:
3.1 申請(qǐng)ecs,安裝配置nginx
yum install epel-release
yum install nginx
nginx文件服務(wù)器配置(/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 測(cè)試數(shù)據(jù)
nginx配置的/mnt/ultra/test/data就是測(cè)試數(shù)據(jù)的目錄
里面預(yù)裝4k小文件,三層目錄結(jié)構(gòu),101010,每個(gè)三層目錄放置了1w個(gè)隨機(jī)內(nèi)容小文件,共1110 directories, 10000000 files。
用tree -L 3查看類似下圖這樣的結(jié)構(gòu)。

nginx文件服務(wù)器訪問(wèn)示意:

直接get路徑下的文件,則會(huì)獲得文件內(nèi)容的響應(yīng)
3.3 測(cè)試套件(CPTS):
CPTS是使用CCE(云容器引擎)集群來(lái)運(yùn)行測(cè)試套軟件的,CPTS測(cè)試軟件是以容器的形式跑在CCE上。
猜測(cè)CPTS測(cè)試并發(fā)能力可能就是多線程+容器的線性擴(kuò)展能力,測(cè)試的控制器可能用的是k8s里面的job,一次測(cè)試任務(wù)就是在CCE上創(chuàng)建一個(gè)job,來(lái)管理測(cè)試的生命周期。
創(chuàng)建CCE集群,注意要確保和nginx ecs網(wǎng)絡(luò)是互通的,為了省事,我們用同樣的vpc subnet和安全組即可。這邊感覺(jué)不太友好,用戶想用CPTS就需要擁有使用CCE的知識(shí),要跳轉(zhuǎn)到CCE去創(chuàng)建資源,可能有人會(huì)覺(jué)得麻煩就放棄使用了。

下面,我們來(lái)創(chuàng)建一個(gè)測(cè)試資源。
這里吐槽一下,創(chuàng)建時(shí)候頻繁的跳轉(zhuǎn)CCE(創(chuàng)管理節(jié)點(diǎn),執(zhí)行節(jié)點(diǎn)),創(chuàng)好的資源刷不出來(lái)等問(wèn)題,交互上面不友好。

最終創(chuàng)好了的測(cè)試資源

3.4 測(cè)試工程
創(chuàng)建一個(gè)工程,這里只要添加名字。
進(jìn)入工程管理,添加一個(gè)事務(wù)。
配置事務(wù):
首先先添加我們的三級(jí)目錄和最后一級(jí)文件為隨機(jī)變量
分別為1-10,1-10,1-10,1-10000



配置完之后,啟動(dòng)調(diào)試,看看是否正確訪問(wèn)。

3.5 開(kāi)始測(cè)試
我們?cè)黾右粋€(gè)測(cè)試任務(wù),然后關(guān)聯(lián)剛才配置的事務(wù),設(shè)置持續(xù)時(shí)間和并發(fā)用戶數(shù),就可以啟動(dòng)測(cè)試?yán)病?br> 實(shí)時(shí)測(cè)試數(shù)據(jù)顯示還是很漂亮的。

下面還有抓包分析工具提供,如果應(yīng)用介入了AOM和APM還能拿到其他分析數(shù)據(jù),集成功能較好。AOM和APM后面也去體驗(yàn)一把,總體來(lái)說(shuō),CPTS使用較為方便,對(duì)于典型的應(yīng)用服務(wù)協(xié)議能夠很方便的運(yùn)行測(cè)試,免去了自己線下構(gòu)建測(cè)試系統(tǒng)的工作,省時(shí)省力。