在 9 月 17 日百度主办、InfoQ 策划组织实施的第18 期百度技术沙龙活动上,来自百度质量部高级架构师王磊以及HP 测试工程师, 7 点测试论坛坛主 Zee,分别分享了与大型网站性能测试的相关话题,话题涉及互联网产品性能测试案例及经验分享和企业级系统性能分析实践。本文将对他们各自的分享做下简单的回顾,同时提供相关资料的下载。
主题一:互联网性能测试案例及经验分享(视频,MP3 和 Slides 等资料下载)
来自百度的高级架构师王磊第一个为大家分享,王磊讲解了四个具体的实例,其中包括测试结果与实际情况不符、OS 对性能测试的影响、网络环境对性能的影响以及不良代码对性能的影响。在每部分的案例讲解中,都将问题进行了重现,首先说明问题表现,其次说明该问题所导致的后果,由如何找到原因再到案例的结论分析等。其中,重点讲解了不良代码对性能的影响部分:
测试对象为一个检索模块,问题为性能表现与预期的相差很大,在分析具体原因时王磊首先讲解了内存分配的原理:
- 检查要访问的虚拟地址是否合法
- 查找 / 分配一个物理页
- 填充物理页内容(读取磁盘)
- 建立映射关系(虚拟地址到物理地址)
- 重新执行发生断页中断的那条指令
从代码的角度上来看:
- 一个请求过来,用 malloc 分配 2MB 内存,请求结束后 free 这块内存
- 日志显示分配内存语句耗时 10us,平均一条请求处理耗时 1000us
从分析中最后得出结论,性能差的原因是:
- 内存申请造成缺页中断
- 因为这种缺页不需要磁盘,所以是 minfit
- 缺页中断在内核态执行,进程的内核态 CPU 消耗很大
主题二:找出系统性能瓶颈:企业级系统性能分析实践(视频,MP3 和Slides 等资料下载)
Zee 的演讲主要包含以下几个部分,理解性能测试、性能测试需求的获取和分析、性能测试执行、控制及分析、可用性统计分析、排队论在分析过程中的应用,最后对各种场景的性能问题通过实例进行了分享。在 Zee 的演讲过程中,重点讲述了性能测试执行、控制及分析。Zee 首先带领读者一同梳理了性能问题分析的流程,接着介绍了如何从系统架构来分析瓶颈点,列举了常见的系统故障征兆:
- 持续运行缓慢
- 系统性能随时间的增加逐渐下降
- 系统性能随负载的增加逐渐下降
- 间发性的系统挂起或异常错误
- 可预见的死锁
- 系统突然出现混乱
稍后,Zee 详细列举了系统常见的问题及解决方法,常见问题涉及内存泄漏呈线性增长、内存泄漏呈指数级增长、导致无限循环的编码缺陷、资源泄漏、外部瓶颈、外部系统的过度使用、频繁调用 CPU 密集型组件的编码缺陷、桥接层本身存在的问题、内部资源的过度使用或分配不足、不断重试、线程阻塞点、线程的死锁或活锁、网络饱和等。针对以上“疾病”,分别列举了出现的征兆,分析其原因并提供了相应的解决办法。紧接着,Zee 还对分析性能问题时需要注意的信息进行了讲解,介绍了如何执行针对 SQL 的性能分析,通过图形的形式展现了性能指标和用户数两者之间的关系和影响并通过思维导图的方式将与性能调整有关的议题进行了呈现。
最后,Zee 针对性能测试中需要注意的一些问题进行了总结:
- 在正式测试之前进行实验性的测试
- 不要对生产环境造成不良影响
- 数据聚集问题
- 没有及时通知其他相关人员
- 全面分析测试数据
- 注意硬件设备对性能的影响
- 没有确定测试需要采集的数据
- 没有确定测试的范围和目的
- 测试时关注系统的出错信息
- 测试的网络环境不清楚
- 相关人员没有及时在现场
- 没有测试一个完整的回路
- 并发数与发送流量的问题
会后一些网友在新浪微博分享了他们参会的感受:
@醉梦如烟 _ 燕飞:#百度技术沙龙#王磊、高楼大家本次关于性能测试这块非常不错,让我受益匪浅,希望今后能更多的参与这样的讲座。
@savager :#百度技术沙龙#好地方,前沿技术,多学习。
@陈奎 _ 走行寻:今天的百度技术沙龙性能测试专场,人数出奇的爆满。
@haitao_yao :#百度技术沙龙# 第二场有料,惠普的性能测试跟我遇到的场景类似,没白来,哈哈。
此外,Zee 在会后的随笔中,记录了参加本期沙龙演讲后的感触,请参阅《Zee 随笔—第十八期InfoQ:百度技术沙龙演讲之后》。
有关百度技术沙龙的更多信息,可以通过新浪微博关注** @百度技术沙龙,或者加入百度技术沙龙微群 **,InfoQ 上也总结了过往 17 期所有百度技术沙龙的演讲视频和资料等,感兴趣的读者可以直接浏览阅读。
评论