中通全链路压测探索与实践

01 背景

目前在中通性能测试主要分为线上和线下压测两种方案,在反复实践过程中我们渐渐发现这两种方案都有着各自不足之处,且为压测工作带来了很多不便。以下就线上和线下压测的不足分析,谈谈中通是如何一步步改进压测方案并解决问题。

在线下压测试过程中,为了减少与真实环境物理资源上的差异,公司采取的是针对CPU与内存进行等比缩放的策略,如果是计算密集型应用,线上环境总的CPU核数为80,线下压测环境总CPU核数为8核,则为10:1的线上线下等比缩放策略,如果是IO(目前只看内存)密集型应用,线上内存总量如果为80G,线下压测环境内存总量为8G,也同样是10:1的线上线下等比缩放策略。

很明显这种等比缩放策略在高TPS目标的压测场景下会失真,TPS目标越高,则失真越严重,因为我们并不能对网络、中间件、数据库等一系列的因子也同样做出等比缩放。

在线上压测时,多以读接口为主,只有相当少量的写接口会做线上压测,这少量的写接口通常也需要被压应用的开发人员进行代码改造,以避免大量的压测数据对业务数据造成污染。

所以这种线上压测方式无法大范围应用,同时这种对代码硬改造的方式,也增加了压测成本与风险,导致大家通常不愿意面对线上压测,更不用提联合上下游一起进行线上全链路压测了,而这种不敢在线上大量压测的思维,也导致更多压测被放在线下以等比缩放的方式进行,其后果则是压测结果的失真,在2012年,某厂正是因为测试环境等比缩放压测,导致网络流量数据失真,引发了线上故障,才促使其下决心走上了线上全链路压测的道路。 

因为有上述问题,公司引入了线上全链路压测产品,其特点是使用压测JavaAgent探针以字节码方式植入应用,这样业务应用则无须硬编码,就可以自动识别和兼容压测流量,并进行分流,将缓存和存储数据存储到影子区域,实现物理隔离压测数据,避免造成生产数据污染,就技术方案上看,线上全链路压测产品最核心的功能其实就是两点:流量染色与保障数据安全,示意图如下:

图片

压测流量链路示意图

 

02 全链路压测部署&核心配置

  • 将pradar-agent.zip包上传到需要接入应用所对应的服务器/home/admin目录下,并直接解压.

  • 修改对应应用的启动脚本( 通常在发布平台中修改),将修改后的后面这个命令添加到java -jar xxx.jar 的-jar之前( -javaagent:/home/admin/pradar-agent/agent/pradar-core-ext-bootstrap-1.0.0.jar -Dpradar.project.name=该应用应用名 )

  • 重新启动应用

在pradar-web操作页面的应用管理页,查看是否成功上报:

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值