注意事项:
登陆聚石塔官网(cloud.tmall.com), 进入控制台,在“质量中心”进入全链路测试.
开通服务后,用户登陆聚石塔控制台“质量中心“-“全链路测试” -“测试环境“中新建压测环境,保存成功后,自动跳转到压测环境首页;
在“测试环境”列表中,找到新创建环境后,在”查看详情“中获取后分配的测试服务器帐号和密码,将需压测的应用服务部署在测试ECS,数据库迁移到测试RDS。
功能说明:
环境配置:查看申请测试环境的基本信息,支持对测试环境应用修改;
释放环境:释放当前所申请的测试环境(注意操作,释放后压测资源即释放,不能再压测);
管理镜像:已创建的环境支持手动生成镜像,便于版本更新后重新对业务系统进行压测,建议压测结束后对当前环境手工生成镜像;
查看详情:查看测试环境的基本信息,公有资源包含帐号和密码,同时支持创建业务db.
完成压测环境搭建后,根据业务类型选择订单处理/仓储管理类应用模式,测试业务包含ERP、订单管理、全渠道商品通、奇门(ERP&WMS);
创建压测任务名称必须唯一性,选择可用压测环境后显示压测资源相关信息,建议创建压测任务时带上业务标签,比如压测的系统业务为商品通,创建任务名称时的规则为:商品通_xxx品牌商压测
编辑压测任务注意,编辑后一定记得要保存。
业务流程时序:
注意:
a.通过质量中心发起压力测试任务后,测试订单数据会根据任务配置情况写入指定RDS中。订单处理系统实时读取RDS的增量数据处理订单,并将处理结果回传;
b.当订单在系统中到达已分单、已接单、已发货三个状态需立刻回传至质量中心指定统计接口(格式见下文)。三个状态的数据回传比率以及平均时间会体现在测试报告中,最终影响测试通过情况;
c.在测试环境中订单处理系统可根据自身情况,对部分状态回传时间做定制。如已发货状态回传可以提前进行,而不必等到真发货后再做回传;
(2)测试数据准备
订单生产的商品信息支持用户自定义字段,若对商品属性内容有要求,可下载商品文件模块,按模块要求填写商品属性并上传.(注意:1.cid是数值型 2.num是商品的售卖数量不是库存数量 3 csv文件格式,小心乱码)
创建订单的店铺帐户最多为 64 个,商家帐号规则为 taobao_jst_xxx[001-064],例如 taobao_jst_easesou001.(门店的编号是:jst001~jst500之间,每次随机取一个)。
创建压测环境推送库,库名jst_info
推送库RDS表结构-MYSQL
CREATE TABLE jdp_tb_trade (
tid bigint(20) NOT NULL PRIMARY KEY,
status varchar(64),type varchar(64),
seller_nick varchar(32),
buyer_nick varchar(32),
created datetime,
modified datetime,
jdp_hashcode varchar(128),
jdp_response mediumtext,
jdp_created datetime,
jdp_modified datetime
)default charset utf8;
CREATE INDEX ind_jdp_tb_trade_seller_nick_jdp_modified ON jdp_tb_trade (seller_nick,jdp_modified);
CREATE INDEX ind_jdp_tb_trade_jdp_modified ON jdp_tb_trade (jdp_modified);
CREATE INDEX ind_jdp_tb_trade_seller_nick_modified ON jdp_tb_trade (seller_nick,modified);
CREATE INDEX ind_jdp_tb_trade_modified ON jdp_tb_trade (modified);
CREATE TABLE jdp_tb_item (
num_iid bigint(20) NOT NULL PRIMARY KEY,
nick varchar(32),
approve_status varchar(32),
has_showcase varchar(32),
created datetime,
modified datetime,
cid varchar(256),
has_discount varchar(32),
jdp_hashcode varchar(128),
jdp_response mediumtext,
jdp_delete int(2),
jdp_created datetime,
jdp_modified datetime
)default charset utf8;
CREATE INDEX ind_jdp_tb_item_nick_jdp_modified ON jdp_tb_item (nick,jdp_modified);
CREATE INDEX ind_jdp_tb_item_jdp_modified ON jdp_tb_item (jdp_modified);
CREATE INDEX ind_jdp_tb_item_nick_modified ON jdp_tb_item (nick,modified);
CREATE INDEX ind_jdp_tb_item_modified ON jdp_tb_item (modified);
推送库RDS表结构-SQLSERVER
CREATE TABLE jdp_tb_trade (
tid bigint NOT NULL PRIMARY KEY,
status varchar(64),
type varchar(64),
seller_nick varchar(32),
buyer_nick varchar(32),
created datetime,
modified datetime,
jdp_hashcode varchar(128),
jdp_response text,
jdp_created datetime,
jdp_modified datetime
);
CREATE INDEX ind_jdp_tb_trade_seller_nick_jdp_modified ON jdp_tb_trade (seller_nick,jdp_modified);
CREATE INDEX ind_jdp_tb_trade_jdp_modified ON jdp_tb_trade (jdp_modified);
CREATE INDEX ind_jdp_tb_trade_seller_nick_modified ON jdp_tb_trade (seller_nick,modified);
CREATE INDEX ind_jdp_tb_trade_modified ON jdp_tb_trade (modified);
压测过程中实时采集测试服务器的性能指标,需要服务商安装并开启性能采集器,根据不同的操作系统性能采集的安装包不同:
windows服务器性能采集器下载地址:点击下载
linux服务器性能采集器下载地址:点击下载
使用说明:
1.如果是windows用户,下载并解压后,双击“push-start.bat”文件,出现如下图,表明安装成功;
2.如果是linux,解压后执行 sh push-start.sh 命令,执行完成后,再执行 ps -aux | grep jst-agent 命令,若看到如下的进程,表明安装成功;
在创建任务时,设置启动压测的系统参数,保存后在压测任务中提交执行压测。
压测配置注意事项:
1.等待时间拉长些,压测停止后会拒绝接收订单,会报错找不到seller_nick类似问题。
2.大订单比例为0时,大订单个数一定是0,否则大订单比例默认20%.
3.全渠道订单比例一定要大于0.否则没有订单推送。
性能测试联调成功后,在测试任务中执行启动压测;
正式压测前注意事项:
1.rds未被锁定。【防止插入不了数据】
2.rds数据已清空。【防止压测时回流旧订单数据】
3 确保服务器性能采集配置安装成功,否则无法采集性能信息。压测没有意义。
4 提供线上正式机器的配置,给到技术小二将压测机器与线上机器配置保持一致。
5.压测任务的配置参数根据isvname和appname存储,如果之前用其他的压测任务保存过,需重新保存。
压测结束,点击查看测试报告,若测试结果出现异常或者系统出现性能瓶颈,建议进行系统调优后重新压测,若测试结果满足预定业务规模,可设置成最优测试报告并提交业务方进行验收.
接口调用示例:
Content内容:
{
"parent_order_code":"",
"store_id":"",
"status":"",
"type":"",
"operator":"operator",
"action_time":"2016-01-01 01:00:00",
"order_codes":[
"12345",
"2323"
],
"seller_nick":"test",
"et_plate_number":"2323"
}
对content的内容进行urlencode:
content=%7b%22parent_order_code%22%3a%22%22%2c%22store_id%22%3a%22%22%2c%22status%22%3a%22%22%2c%22type%22%3a%22%22%2c%22operator%22%3a%22operator%22%2c%22action_time%22%3a%222016-01-01+01%3a00%3a00%22%2c%22order_codes%22%3a%5b%2212345%22%2c%222323%22%5d%2c%22seller_nick%22%3a%22test%22%2c%22et_plate_number%22%3a%222323%22%7d
http://121.41.173.218:8080/jst/dataflow?method=taobao.qimen.orderstatus.sync×tamp=2016-09-13 13:34:43&format=json&app_key=XXX&v=1.0&sign=31F20A098287408814C9691DAA524496&sign_method=md5&customerId=123456789&content=%7b%22parent_order_code%22%3a%22%22%2c%22store_id%22%3a%22%22%2c%22status%22%3a%22%22%2c%22type%22%3a%22%22%2c%22operator%22%3a%22operator%22%2c%22action_time%22%3a%222016-01-01+01%3a00%3a00%22%2c%22order_codes%22%3a%5b%2212345%22%2c%222323%22%5d%2c%22seller_nick%22%3a%22test%22%2c%22et_plate_number%22%3a%222323%22
压测回流注意事项:
1.如果编码有问题加remark字段,如果没有就不要加。如果还有问题,请查看具体传的content内文字编码。
2.人工mokcl的数据回流是不成功的,只有压测启动后,系统自动回流的才会成功。否则也会提示seller_nick找不到的错误。
3.推送的订单,全渠道的订单是按配置的比例推送的,回流只需回流全渠道的订单,非全渠道的订单不需要回流。
接口描述:
接口简介 |
订单在达到已分单时立刻调用此接口回传数据 |
对应线上接口 |
taobao.qimen.orderstatus.sync(奇门) |
接口协议 |
TOP |
回传URL |
http://121.41.173.218:8080/jst/dataflow |
名称 |
类型 |
是否必填 |
示例值 |
描述 |
parent_order_code |
String |
必须 |
194111891685000 |
淘系主订单号 |
store_id |
String |
可选 |
34511224 |
目标门店的商户中心门店编码 |
status |
String |
必须 |
X_ALLOCATION_NOTIFIED(派单到门店或电商仓) |
订单状态 |
type |
String |
可选 |
FAHUO |
业务类型 |
operator |
String |
必须 |
xxx |
操作人 |
action_time |
Date |
必须 |
2016-05-17 12:00:10 |
事件发生时间 |
order_codes |
String[] |
必须 |
194111891685000,194111891685001 |
淘系子订单号列表 |
seller_nick |
String |
必须 |
湖畔网络 |
(压测特有)订单详情中的seller_nick字段 |
et_plate_number |
String |
必须 |
MTQ3MzIxNTU1NTAwMw== |
(压测特有)订单详情中的 et_plate_number字段 |
接口描述:
接口简介 |
订单在达到已接单时立刻调用此接口回传数据 |
对应线上接口 |
taobao.qimen.orderstatus.sync(奇门) |
接口协议 |
TOP |
回传URL |
http://121.41.173.218:8080/jst/dataflow |
名称 |
类型 |
是否必填 |
示例值 |
描述 |
parent_order_code |
String |
必须 |
194111891685000 |
淘系主订单号 |
store_id |
String |
可选 |
34511224 |
目标门店的商户中心门店编码 |
status |
String |
必须 |
X_SHOP_ALLOCATION(门店已接单) |
订单状态 |
type |
String |
可选 |
FAHUO |
业务类型 |
operator |
String |
必须 |
xxx |
操作人 |
action_time |
Date |
必须 |
2016-05-17 12:00:10 |
事件发生时间 |
order_codes |
String[] |
必须 |
194111891685000,194111891685001 |
淘系子订单号列表 |
seller_nick |
String |
必须 |
湖畔网络 |
(压测特有)订单详情中的seller_nick字段 |
et_plate_number |
String |
必须 |
MTQ3MzIxNTU1NTAwMw== |
(压测特有)订单详情中的 et_plate_number字段 |
接口描述:
接口简介 |
订单在达到已发货时立刻调用此接口回传数据 |
对应线上接口 |
taobao.qimen.orderstatus.sync(奇门) |
接口协议 |
TOP |
回传URL |
http://121.41.173.218:8080/jst/dataflow |
名称 |
类型 |
是否必填 |
示例值 |
描述 |
parent_order_code |
String |
必须 |
194111891685000 |
淘系主订单号 |
store_id |
String |
可选 |
34511224 |
目标门店的商户中心门店编码 |
status |
String |
必须 |
X_SHOP_HANDLED(门店/电商仓已发货) |
订单状态 |
type |
String |
可选 |
FAHUO |
业务类型 |
operator |
String |
必须 |
xxx |
操作人 |
action_time |
Date |
必须 |
2016-05-17 12:00:10 |
事件发生时间 |
order_codes |
String[] |
必须 |
194111891685000,194111891685001 |
淘系子订单号列表 |
seller_nick |
String |
必须 |
湖畔网络 |
(压测特有)订单详情中的seller_nick字段 |
et_plate_number |
String |
必须 |
MTQ3MzIxNTU1NTAwMw== |
(压测特有)订单详情中的 et_plate_number字段 |
1、 如何先推送一些数据到测试的RDS里面来调试压测系统?
创建压测任务的时候,在定义接口那里先选择一个空接口,启动压测。
2 、推送到RDS的数据字段介绍
参见推送表字段:http://api.alidayu.com/docs/doc.htm.htm?articleId=101587&docType=1&treeId=2#s3
3 、压测环境接口调用地址是多少?appkey填正式的吗?
压测接口请求地址统一http://121.41.173.218:8080/jst/dataflow .需要sessionkey的接口,sessionkey可以随意填写,不会验证其合法性。appkey等填写正式环境的。
4 、压测资源显示无效状态是什么原因?
压测资源有效期14天,请尽量在14天内完成压测,否则资源会被释放,若特殊情况需要延期,请联系支持同学申请延期
5、测试服务器连不上RDS?
数据库连接配置里面:rm-XXX.XX.rds.aliyuncs.com,3306,rm-XXX.XX.rds.aliyuncs.com,3433 端口的地方是逗号。
6、压测回传et_plate_number 这个字段从哪获取?真实线上没有这个字段。
压测任务选择全渠道压测,会将该字段推到订单属性里面。 这个字段是用来统计回传率的, 压测环境需要的。
7、所有订单都需要回传吗?
推送会设置全渠道订单的比例,只需要回传全渠道的订单。
8、 分单到门店及电商仓的订单,如何回传数据?
分单到电商仓:需要按接口回传两个状态: X_ALLOCATION_NOTIFIED(派单到门店/电商仓)和X_SHOP_HANDLED(门店已发货/电商仓)
分单到门店: 需要按接口回传三个状态: X_ALLOCATION_NOTIFIED(派单到门店/电商仓)、X_SHOP_ALLOCATION(门店已接单)和X_SHOP_HANDLED(门店已发货/电商仓)
9、 推送设置回传等待是什么意思?
等待时间指的是在持续时间后,还要等待多长时间关闭任务。因为全渠道压测后面有一个回传数据的步骤,任务还不能停止。
10.回传接口报错:{"qimen_orderstatus_sync_response":{"message":"null","qimen_code":"NullPointerException"}}
content加上编码问题,content内容里面加一个字段remark=utf8code。
{
"parent_order_code":"",
"store_id":"",
"status":"",
"type":"",
"operator":"operator",
"action_time":"2016-01-01 01:00:00",
"order_codes":[
"12345",
"2323"
],
"seller_nick":"test",
"et_plate_number":"2323",
"remark":"utf8code"
}
11、 上传商品信息字段 num 代表什么?
num 代表一个订单会减几个库存,如果这个值默认不填 ,代表是1个。
12、 为什么启动压测,RDS没有数据进来?
按下图操作,重置下相关参数。
13、 默认情况下会推多个店铺的数据,如何设置只推一个店铺的数据?
测试参数设置时:将店铺设置为1,开始并发数设置为1,并发增幅设置为0即可。