`
youxinrencwx
  • 浏览: 71106 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

压力测试和系统优化tips

阅读更多

昨天有个朋友问题对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.迭代平衡瓶颈。
分享到:
评论

相关推荐

    渗透测试TIPS之删除伪造Linux系统登录日志1

    在渗透测试过程中,为了隐藏入侵者的踪迹,避免被系统管理员发现,删除和伪造Linux系统的登录日志是一项关键技能。本文将深入探讨如何处理Linux中的utmp、wtmp、btmp以及lastlog这些与登录相关的二进制日志文件。 ...

    压力测试和系统优化的技巧

    昨天有个朋友问题对mina是否有什么优化的资料,他这边一个系统压到500并发就上不去了,开始在看中国好声音,也没多想,直接说我这边没有。  昨天有个朋友问题对mina是否有什么优化的资料,他这边一个系统压到500...

    OS X 系统的tips

    从给定的文件信息来看,虽然原文包含了一些乱码和无法识别的字符,但我们可以从中提炼出关于OS X系统的一些实用技巧和知识点。以下是对这些技巧的详细解释: ### OS X系统的八大技巧 #### 技巧一:MAC与PC之间的...

    渗透测试,渗透测试小技巧,渗透测试Tips,师傅们跟我一起维护更新吧~.zip

    渗透测试,渗透测试小技巧,渗透测试Tips,师傅们跟我一起维护更新吧~渗透测试Tips - Version1.3(后续进行分类,倒叙排列,以及美化格式,师傅们先将就一下~)希望师傅们可以分享一些个人渗透测试Tips,提交方式在...

    渗透测试Tips - Version1.3.zip

    渗透测试Tips - Version1.3渗透测试Tips - Version1.3(后续进行分类,倒叙排列,以及美化格式,师傅们先将就一下~)希望师傅们可以分享一些个人渗透测试Tips,提交方式在下面转载请保留来源更新日志2021年06月08日 ...

    性能测试小Tips

    性能测试小Tips软件测试1、性能测试的目的:通过测试确认软件是否满足产品的性能需求,同时发现系统中存在的性能瓶颈,起到优化系统的目的。2、性能测试指标的来源:测试的依据是产品的需求规格说明书;如果用户没有...

    abap tips abap tips

    abap tips abap tips abap tips abap tips abap tips

    Android应用源码之Protips.zip

    Protips可能包括了如何减少内存泄漏、避免ANR(Application Not Responding)、优化UI绘制和线程管理等方法。例如,使用 LeakCanary 检测内存泄漏,或使用 Profiler 工具进行性能分析。 2. **代码结构与设计模式**...

    Oracle Database 12c Release 2 Performance Tuning Tips and Techniques

    《Oracle Database 12c Release 2 Performance Tuning Tips and Techniques》这本书不仅涵盖了Oracle 12c R2版本的最新特性和优化技巧,还深入探讨了与之相关的Oracle Exadata和Oracle Cloud DBaaS等内容。...

    软件性能测试小Tips

    通过测试确认软件是否满足产品的性能需求,同时发现系统中存在的性能瓶颈,起到优化系统的目的 3、性能测试的指标:服务器的各项指标(CPU使用率、内存占用率、硬盘占用率等)、后台数据库的各项指标和软件的响应时间...

    渗透测试,渗透测试小技巧,渗透测试Tips,师傅们跟我一起维护更新吧~_PenetrationTest-Tips.zip

    渗透测试,渗透测试小技巧,渗透测试Tips,师傅们跟我一起维护更新吧~_PenetrationTest-Tips

    Swift tips Swift 开发者必备的tips

    Swift 4.0作为这本书的重点版本,引入了许多改进和优化,旨在让开发者能够编写更清晰、更安全的代码。以下是根据标题和描述提炼出的一些关键知识点: 1. **类型推断与类型安全**:Swift 4.0进一步强化了类型推断,...

    Microsoft visual studio tips

    - **集成测试**:模拟实际运行环境进行系统测试。 8. **项目模板与解决方案** - **预定义项目模板**:快速启动新项目,如ASP.NET Web应用、Windows桌面应用等。 - **解决方案管理**:组织多个相关项目,方便协同...

    Lua Performance Tips.rar

    10. **测试和分析** 使用性能分析工具如`luac -p`和`lua prof`进行代码性能分析,找出瓶颈并针对性优化。 通过理解和实践这些Lua性能优化技巧,开发者可以编写出更快、更稳定的代码,使应用程序在有限的资源下达到...

    Swift 开发者必备 Tips

    作为Swift开发者,掌握一些实用的Tips能够显著提高开发效率和代码质量。"Onevcat Swifter - Swift 开发者必备 Tips"正是这样一份资源,它可能包含了关于Swift编程的诸多技巧和最佳实践。 1. **类型推断与强制解包**...

    1000 Java Tips

    《1000 Java Tips》是一本专门为Java程序员和开发者准备的实用指南,它集结了1000个关于Java编程的技巧、建议和最佳实践。这本书覆盖了Java语言的各个方面,从基础语法到高级特性,旨在提升读者的编程效率和代码质量...

    100 power tips for fpga designers

    2. **设计流程与方法论**:从需求分析到系统设计,再到逻辑综合、布局布线、时序分析和验证等各个环节的技术要点和最佳实践。 3. **工具使用技巧**:针对市场上主流的FPGA开发工具(如Xilinx ISE、Vivado、Quartus...

    精品软件工具--Tips是一款办公工具软件,用来对日常工作事务进行管理。能够根据任务的类别,重要紧急程度和时间紧迫性计.zip

    综上所述,Tips软件是提高个人和团队生产力的有效工具,通过任务管理、优先级设定和时间规划,它可以帮助用户更好地应对复杂的工作环境,提升工作效率,降低工作压力。对于现代职场人士来说,掌握这类软件的使用技巧...

Global site tag (gtag.js) - Google Analytics