昨天有个朋友问题对mina是否有什么优化的资料,他这边一个系统压到500并发就上不去了,开始在看中国好声音,也没多想,直接说我这边没有。后来中间休息的时候,发现回答的有点问题,心里觉得其实应该告诉他压测的tips,找到瓶颈才能知道问题所在,昨晚初略的说了一下,今天把以前的一些经历回忆一下,贴出来,多少对一些新人有帮助。

  这里主要还是说一下经验,具体的工具不太多的说了,以前写的一些blog多少有提到。首先判断压测需要开始查问题的情况是加并发用户,TPS不增长了,甚至开始下跌了,RT不动了,甚至开始上涨了。(这两者有时候是有关联变化的,有时候是没有关联的变化的)

  然后开始分析问题,第一件要做的事情:判断自己用的压测方式和工具(lr,ab,自己写的多线程客户端)是否正确,有好几次都是找了一圈发现测试端出现了问题(这是很悲催的),这类问题如何定位?找恒定基准(空挂web容器,mock对象固化RT)。

  第二件事情,用操作系统的资源监测命令(linux 命令翻出来看看),cpu利用率,load,memory使用情况(cache,swap,应用占用),上下文切换情况,io wait,网络数据量,数据包丢包情况,文件句柄配置等等。根据这些指标判断,在用户并发增加的时候,哪些指标变化的厉害,甚至已经明显成为瓶颈。如果你是java应用,那么多看看jvm的gc,线程dump出来看看是否有大量lock,或者有单线程吃掉固定的cpu等等。

  第三件事情,开始定位到底什么引起了这些基础资源成为瓶颈。首先先要排除依赖系统的问题,所谓依赖系统,比如web容器,集中式缓存,db等等,这些系统通常你没有办法debug,最重要的是去看看他们的log,对于warning,error特别注意,例如nginx对于数据包上下行会有配置,到一定大小就开始借助磁盘来缓解内存压力,不留意压力就上不去了,同时io也会很多。接着开始拆解你应用的各个模块,mock的方法来保证无消耗接口依赖,这样再反复测试定位问题。大志定位到某一个模块有影响的时候,一定要注意,这只是嫌疑犯,如果你写过有指针的语言你就会理解,往往问题发生在非爆发点。同时要提醒一点的是,很多时候当你真实的判断出一个瓶颈点的时候,优化了它,也许性能更低,为啥,例如A和B两个模块,A是瓶颈tps为30,B的tps是35, 此时你把A优化到了tps为50,但是对于B来说压力明显就增大了,此时B可能由于资源压力tps开始下降(就是前面提到的并发用户上升除了保持平线,还可能下降)。

  可能说到这里很多人觉得这都是常识,也没啥实质内容,其实首先就是找问题,然后就是用你语言熟悉度和业务设计来破隙问题。最后说最常用的几个所谓的优化万精油:

  1.减少关键业务路径的RT总和。很多时候纠结与所谓的代码级别省,不如业务直接优化一点来的天崩地裂。(基础系统除外)

  2.瓶颈资源,例如第二步说的所有指标资源和依赖系统的资源(例如web容器的线程数等)等。对瓶颈资源做两种处理:a.高效使用。(例如db的批量处理,缓存的批量获取,磁盘的批量刷出)b.少用。对数据一致性要求不高的情况下可以做一些本地缓存等等。c.快速释放。写过事件驱动代码的同学应该深有体会,将业务处理切割细化以后,原本hold的资源也会被碎片化的使用。(其实我们学习计算机cpu演进的时候就能看到这通俗的道理),快速释放意味着同样资源可以服务更多请求者。d.交换资源。磁盘换内存,多核cpu处理能力换存储。有兴趣可以看看TOP已经用了两年多的流式计算框架里面的设计细节。

  3.换依赖,包括web容器,集中式缓存,磁盘等等,换他们并不一定是他们不好,而是也许数据结构不支持导致需要多次操作(集中式缓存),多系统间有更好的私有交互协议(反向代理和web容器之间),本身被革命了(固态硬盘)。

  先写到这里,多少应该有点帮助,或者你遇到类似问题会有点共鸣,如果你是做业务系统,那么这个万精油的顺序就是你最好的改进顺序。

  还是那句话,优化这东西就四步:1.找。2.定位。3.分析。4.迭代平衡瓶颈。

压力测试和系统优化的技巧相关推荐

  1. 压力测试和系统优化tips

    昨天有个朋友问题对mina是否有什么优化的资料,他这边一个系统压到500并发就上不去了,开始在看中国好声音,也没多想,直接说我这边没有.后来中间休息的时候,发现回答的有点问题,心里觉得其实应该告诉他压 ...

  2. 压力测试工具Apache JMeter:4:压力测试报告说明与使用技巧

    Apache JMeter是一个纯Java开发的用于负载测试或者性能测试的开源软件.这篇文章介绍一下使用JMeter生成的报告的概要说明,以及使用的技巧和注意事项. 环境准备 关于Apache JMe ...

  3. 大型网站压力测试及优化方案

    作者:邴越 来自:cnblogs.com/binyue 0 木桶理论应用在系统优化中 木桶理论又称短板理论,其核心思想是一只木桶盛水多少,并不取决于最高的木板,而取决于最短的那块木板. 木桶原理应用在 ...

  4. linux下面jmeter对百度进行压力测试

    环境与版本: ubuntu19.10 Apache Jmeter 2.13.20180731 # apt install jmeter [1]中的一段问题写的很好: 虽然我们的需求是要我们同时,但是没 ...

  5. 压力测试过负载均衡_性能测试的方法有哪些?

    压力测试: 压力测试的关键字就是"极端".通过对系统的极端加压,从而观察系统的所表现出来性能问题.再对此性能问题进行分析,从而达到系统优化的目的.所以压力测试就是一定要让系统出问题 ...

  6. 怎样对流媒体进行压力测试_对node工程进行压力测试与性能分析「干货」

    作者:小黎 转发链接:https://mp.weixin.qq.com/s/WBe7ZLoqFD9UqNusnv_IDA 前言 在系统上线前,为了看下系统能承受多大的并发和并发下的负载情况,常常会先进 ...

  7. tpcc-mysql percona_tpcc-mysql 对percona5.6进行压力测试

    由于测试环境使用的是经过裁剪过的线上环境的ISO镜像,所以在初始阶段碰到了很多问题:第一个错误: # cd /root/tpcc-mysql/src && make cc -w -O2 ...

  8. 10分钟学会数据库压力测试

    01 前言 很多人提到jmeter时,只会说到jmeter进行接口自动化或接口性能测试,其实jmeter还能对数据库进行自动化操作. 个人常用的场景有以下: 对自动化产生的数据,进行删除 不断修改数据 ...

  9. 基于Windows下的Web性能测试和压力测试

    基于Windows下的Web性能测试和压力测试 Web测试 随着Internet的日益普及,现在基于B/S结构的大型应用越来越多,可如何对这些应用进行测试成为日益迫切的问题.有许多测试人员来信问我B/ ...

最新文章

  1. Python大佬 | 菜鸟进阶必备的九大技能!
  2. Windows上安装HADOOP单机伪分布式集群
  3. Azure上A/D系列虚拟机到DS系列迁移(2)
  4. AI赌神超进化:德扑六人局击溃世界冠军,诈唬如神,每小时能赢1千刀 | Science...
  5. Ubuntu 使用root 帐号开启 SSH 登录
  6. Pytorch install
  7. Linux读写锁释放,Linux读写锁的使用
  8. 英语常见介词错误用法,你有犯过吗?
  9. 苹果再因“降频门”遭遇集体诉讼,11.5万用户出拳
  10. 使用mysql数据库与go进行交互
  11. 中兴通讯首届郑和杯无线应用创作挑战赛正式启动
  12. Linux 下Nginx+Tomcat 完美整合 nginx tomcat 整合方式
  13. 小爱mini改aux立体声_拆解报告:Redmi小爱音箱Play
  14. atitit.vod search doc.doc 点播系统搜索功能设计文档
  15. Vue进阶(四十四):vue 图片加载完成事件
  16. 无源RFID固定资产管理解决方案
  17. 光通信的再思考:5G流量爆发下的数据密度革命
  18. 小程序源码:全新实用工具证件照制作-多玩法安装简单
  19. Advanced Super-Resolution using Lossless Pooling Convolutional Networks
  20. Master HA彻底解密

热门文章

  1. c++——继承、多态
  2. 真无图的城市NOA,比你想象中来得更快
  3. 计算机网络的组成及分类
  4. 网络工程师-复习11-下一代互联网
  5. 比大厂更香的Offer:有钱,有氛围,也有生活
  6. 图像处理的思考题解答
  7. 互联网公司竞争日趋激烈
  8. Ising模型的2D模拟
  9. 9月5-8日与400多家光通信企业相聚深圳CIOE光通信展
  10. android studio 获取sha1keytool -list -v -keystore E:\PGY\keyStore\chunni.jks