【软件性能测试与调优实践】分析调优案例

同步锁

减少同步锁的使用

在多线程并发运行中,应该在保证线程安全的情况下,尽量少使用线程同步锁,因为线程同步对多线程并发运行的性能影响很大
比如日志输出可以不要求实时同步,那么就可以把线程同步输出日志改为异步输出

减少同步锁同步范围

如果一定要使用线程同步锁,那么应该尽量减少线程同步的代码范围,只对必须保证线程安全的代码加线程同步锁

分布式同步锁

虽然在代码中可以使用同步锁保证线程安全,使数据库中不出现重复的脏数据,但是却影响了多线程并发时的性能

此种线程安全只能适用单个应用服务器节点的部署情况,如果是分布式的多个节点部署方案,则此种同步锁无法奏效

一般需要借助分布式同步锁,比如借助RedisZooKeeper实现分布式同步锁
但是使用分布式同步锁,其并发性能一般也很低效

数据库唯一索引

除了使用同步锁来保证数据不重复插入这种方式外,还可以使用数据库的唯一索引来保证数据库的数据唯一,确保不重复插入
虽然使用唯一索引后,数据库肯定会有性能消耗,但是在数据量不是非常大的时候,这种方式性能效果应该更佳,而且数据库数据查询可以通过建立索引来提高查询效率

针对数据库中数据量非常大的情况,可以采用分表的方案
比如可以针对唯一字段基于某种算法做分表处理,确保唯一字段采用算法计算时每次都是进入同一个表中,这样还是可以对每张表中唯一字段建立唯一索引来提高性能

简介 6 1 概述 7 1.1. 性能测试目标 7 1.2. 性能测试类型 7 1.3. 性能测试阶段 7 1.4. 性能测试过程 8 2 分析性能需求 8 2.1. 了解系统性能需求 8 2.2. 建立数据模型 9 2.3. 分析性能需求、确定合理性能目标: 9 3 制定性能测试计划 10 3.1. 测试环境 10 3.2. 测试软件 11 3.3. 测试人员 11 3.4. 测试目标 11 3.5. 测试日程 11 4 设计场景 11 4.1. 设计性能测试的测试案例 12 4.2. 性能测试案例设计模板 12 4.3. 设计场景示例 12 5 根据场景编写程序、编写脚本、修改应用系统等; 13 5.1. 程序编写 13 5.2. 脚本编写 13 5.3. 应用程序修改 13 6 执行性能测试 14 6.1. 准备性能测试环境 14 6.2. 执行性能测试 15 6.2.1 执行性能测试 15 6.2.2 常用监控指标 15 6.2.3 执行性能测试基本原则 15 6.3. 分析测试结果 15 6.3.1 分析测试结果 15 6.3.2 性能问题分析原则 16 6.3.3 常见性能问题及成因 16 6.3.4典型性能问题的诊断 16 6.3.5性能问题分析示例 16 6.4. 性能调优 19 6.4.1 调优基本原则 19 6.4.2 调优的基本步骤 19 6.4.2 调优的内容 19 6.5. 性能回归测试 20 6.6. 测试报告 20 7 附录 20 7.1附录1:执行性能测试基本原则 20 7.2附录2:性能问题分析原则 21 7.3附录3:常见性能问题及成因 21 7.4附录4:常用监控指标 23 7.5附录5:如何诊断数据库的性能问题 23 7.6附录6:调优原则 25 7.7附录7:调优的基本步骤 25 7.8附录8:性能测试案例设计模板 26 7.8.1 预期性能指标测试案例模板 26 7.8.2 用户并发测试案例模板 26 7.9附录9:LoadRunner性能测试工具简介 27 7.10附录10:Jmenter性能测试工具简介 28 7.11附录11:Jprofiler性能监控工具简介 33
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

sysu_lluozh

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值