背景:公司接到私有化项目部署,由于没有各个微服务的真实能力,往往项目经理拉会开发评估需要的资源,但是没有测试数据支撑,导致评估的资源往往到线上真实使用量高太多,客户经常抱怨给的服务器资源使用的并不多,所以组织这次压测,目的是得到各个微服务的能力及全链路合理的资源配比(以实时在线通话2000为例)。

什么阶段的公司搞全链路压测

微服务的架构。
    需要架构组,得有Mtrace的这种微服务RPC消息跟踪体系架构,能改中间件。
    各部门能配合全链路压测调试及部署,运维的机器资源部署。
    简单性能测试要通过,即单点的性能测试要没问题。
    有更高的技术追求。

什么时间搞全链路压测

压力小的白天就行,要错过高峰期,这也是得益于数据隔离,服务器隔离。
    压力大的一般凌晨进行,要错过高峰期。

谁来搞

肯定不是测试,也不是一般的性能测试工程师和测试开发工程师,基本上是一个研发团队在搞。

据说美团的压测平台前身也是测试开发工程师搞的,推广的也不错,在美团趟出了一条压测的路,但是存在了不少有待改进的地方。后来种种原因,平台移交给了开发团队,现在看起来,平台的压测性能、可用性等各方面有了很大的提升。不是说测试开发的同学做不了,而是效率和速度确实还是有差距的。开发同学的效率和速度就是特别大的优势,能加班,可以快速的让产品成型并且快速迭代。

梳理服务

1.梳理某项目所有微服务,服务架构,实现方式,调用关系,线上环境的请求配比(后续做测试数据、编写测试脚本等需要);

2.梳理服务间调用用到的协议,为后续压测工具选型最准备,本次压测设计到freeswitch、unimrcp、http、grpc协议,由于市面上没有哪款压测工具支撑上述各种协议,最终决定用locust压测,最大好处,能支持二次开发,可以自我实现各种需求

准备环境

1.根据需求量和原有的数据大概评估一下服务器,分析哪些服务耗内存,哪些耗cpu....

2.部署相关服务,监控(grafana + prometheus),部署需要的各种exporter (服务器、服务、中间件、locust等),由于locust本身压测数据不是持久化,prometheus提供了exporter来收集locust压测数据后展示到grafana-参看以往的博文

3.6台服务器、近50个微服务

压测策略

1.先压出单个服务的能力(不限制QOS,被压服务和压测脚本单独部署)

2.根据单个服务的能力和各个微服务的QPS的比率关系,合理配比副本数

3.全链路压测,对资源使用进行微调

压测过程

1.由于压测涉及到大量的音频传输,先测试压测服务器的io读写速度

2.从最底层服务开始压测服务能力,不限制QOS,加大压力看QPS、响应时间、内存、cpu、磁盘io、网络io、各连接数...的使用情况,找到压力拐点为止。

3.压测次底层服务,优先增大依赖的服务能力(通过副本数或资源增大等),有些微服务只做了代理,能力太强,考虑用mock服务代替后面依赖的微服务(mock服务能力要考虑后面服务的真实能力,随机sleep一段时间)

4.重复2-3步骤,压出online核心服务的处理能力。

5.根据单服务的能力,分析2000在线通话对各个服务的资源使用情况,需要考虑全链路的压测场景,单位时间内几轮对话对请求影响比较大

遇到问题

1.测试发现,当压力上去time_wait的数量会持续增大,同时释放的速度又小于新创建连接的速度,就是导致time_wait状态持续过多,这样会导致部分连接无法创建,现象表现为电话打不通,通过修改tcp_max_tw_buckets=50000,tcp_fin_timeout=10s两个系统参数解决上述问题

2.有几个重要服务要占用大量rtp端口,当部署到同一台服务器上,会导致资源抢占厉害,分配的端口也可能给sipp和一些系统服务产生冲突导致无法注册,所以通过调整部署方式和可用端口段解决上面问题

3.压力上去后,某些中间件连接数不够,服务异常后因为无法连接而重启失败

4.某些微服务也是采用了容器里的默认参数,调整后能力大幅提升

5.ELK占用大量资源。。。。

6.。。。

压测结论

1.部署方式很重要

2.要善于结合系统参数进行调优(参考How Can I View and Modify Kernel Parameters of a Linux ECS?_Elastic Cloud Server_FAQs_Network Configurations_Others_HUAWEI CLOUD)

3待补充。。。

一次全链路压测-总结相关推荐

  1. 全链路压测体系建设方案的思考与实践

    在阿里淘宝 双11 的过程中,长期以来都是在生产环节做全链路压测的,通过实践我们发现在生产环境中做压测,实际上会和一个 IT 组织的结构.成熟度.流程等紧密相关,所以我们把全链路压测从简单的制作范围内 ...

  2. 高德全链路压测——语料智能化演进之路

    背景 高德地图作为日活过亿的国民级出行生活服务平台,承载着海量用户服务的是后台的超大规模集群.从用户角度,如果出问题,影响会很大.3机房异地部署造成线上环境复杂,链路复杂.在这样的条件下,如何避免因故 ...

  3. 全链路压测自动化实践

    背景 境内度假是一个低频.与节假日典型相关的业务,流量在节假日较平日会上涨五到十几倍,会给生产系统带来非常大的风险.因此,在2018年春节前,我们把整个境内度假业务接入了全链路压测,来系统性地评估容量 ...

  4. 罗辑思维在全链路压测方面的实践和工作笔记

    业务的知名度越高,其背后技术团队承受的压力就越大.一旦出现技术问题,就有可能被放大,尤其是当服务的是对知识获取体验要求颇高的用户群体. 提供知识服务的罗辑思维主张"省时间的获取知识" ...

  5. 美团全链路压测自动化实践

    境内度假是一个低频.与节假日典型相关的业务,流量在节假日较平日会上涨五到十几倍,会给生产系统带来非常大的风险.因此,在2018年春节前,基于美团基础的压测平台Quake,我们把整个境内度假业务接入了全 ...

  6. 有赞11·11:全链路压测方案设计与实施详解

    2017年双十一即将来临,对于买家来说是一年一度的购物狂欢,可是对于电商公司的技术人员来说,却是一年一次的大考.如何用更少的预算完成指定当前业务规模的流量高峰,是技术的永恒主题. \\ 由InfoQ举 ...

  7. 小工匠聊架构-写给研发工程师的全链路压测

    文章目录 Pre 全链路是怎么一回事儿 为什么要全链路压测 全链路压测前的准备工作 压测环境 监控工具(推荐pinpoint) 预埋数据和背景数据 压测指标 & 压测场景 压测工具 压测环境 ...

  8. “敏捷版”全链路压测

    作者:子矜 审核&校对:风云.雨芙 编辑&排版:雯燕 客户的故事 全链路压测被誉为大促备战的 "核武器" ,如果之前有关注过阿里双 11 相关的技术总结,对 &qu ...

  9. dubbo 服务压测_全链路压测资料汇总——业内大厂解决方案

    最近忙于公司的全链路压测平台调研和技术规划文档输出工作,参考了全网能搜到的业内大厂的全链路压测方案,这里做个汇总,以及将个人认为可以落地的方案做一个关键点整理. 技术链接 滴滴全链路压测解决之道 阿里 ...

  10. 干货 | 应用性能提升 70%,探究 mPaaS 全链路压测的实现原理和实施路径

    简介:全链路压测方案下,非加密场景下至少有 70% 的性能提升,加密场景下 10%的性能提升,并在 MGS 扩容完成后可实现大幅的性能提升,调优的结果远超预期. 业务背景 随着移动开发行业的步入存量时 ...

最新文章

  1. 2020年中国智慧城市发展值得关注的技术
  2. 如何选择正确的激活函数?
  3. AT解析层的思路分析及代码实现
  4. python怎么把cpu占满_如何增加python CPU使用率
  5. js滑动到底部加载更多
  6. linux安装mysql出错( file /usr/share/mysql/czech/errmsg.sys from install of MySQL-server-5.5.31-2.el6.i6)
  7. 公网对讲机修改对讲机程序_更少的对讲机,对讲机-更多专心,专心
  8. C语言试题五十二之学生的记录由学号和成绩组称个,n名大学生得数据已在主函数中放入结构体数组a中,请编写函数fun,它的功能时:按分数的高低排列学生的记录,高分在前。
  9. 做了三年Java,docker网络映射配置
  10. NOIP 2011 聪明的质检员-二分答案
  11. 利用Pandas库进行简单的数据分析(数据清洗)
  12. SAP HANA创建类型(SAP HANA CREATE TYPE):
  13. Unity3D 与udk 3D游戏动漫引擎的开发特点
  14. 数值计算方法matlab课后答案,《现代的数值计算方法matlab版》习题解答.pdf
  15. PLC编程实现堆栈功能
  16. Mac OS X 背后的故事(五)Jean-Marie Hullot的Interface Builder神话
  17. 企业信息化建设的意义
  18. 聚焦堆栈重建光场-SART实现(附代码)
  19. 微商新传奇奢瑞小黑裙、两家小程序内测成员都来这了,SDCC2016微信开发专题议题揭晓...
  20. Everything Toolbar - 文件搜索神器everything的增强插件

热门文章

  1. 基于VB的员工请假管理系统设计与实现
  2. python音乐下载器
  3. ubuntu下Tomcat更改端口号
  4. 支持对抗样本防御的AI加速器架构设计
  5. 完数(完备数、完美数)
  6. 各省简称 拼音 缩写_中国各省市的简称读音
  7. python 解决无法更新pip问题
  8. Unity3D插件开发
  9. 【音视频】实操YUV与RGB互转(planar模式 YUV420、YUV422、YUV444与RGB888)
  10. 管理造成的问题:京东商城后台语言改用java