性能测试系列(一)
性能测试之性能分析步骤
1.确定应用类型
应用大致分为cpu 密集型和IO 密集型。
- **Cpu 密集型:**就是一个批量处理 CPU 请求、逻辑判断以及数学计算的过程,反应出来的现象是高负荷的 CPU 占用,load 值过高。典型的是web server。
- IO 密集型:一般都是高负荷的内存使用以及存储系统,此类应用通常使用 CPU资源都是为了产生 IO 请求以及进入到内核调度的sleep 状态。反映出来的现象是CPU 在等 I/O (硬盘/内存) 的读/写,此时 CPU Loading 不高。典型的是:mysql、oracle 等
2.掌握压测环境的资源参数
包括需要了解用到的中间件相关版本、参数配置情况及 包括需要了解用到的中间件相关版本、参数配置情况及 服务器 cpucpucpu、 网卡、 网卡内存等硬件 性能指标
3.确定基线统计:
- 明确单 服务情况下的大概性能,如明确单 服务情况下的大概性能,如helloword请求在虚拟机下 tps 至少 1w ,单redis 在物理机 在物理机 下的单线程跑满, set set的 tps 应该至少在 8W,mysql小字段类型的 insert insert 的 tps 至少在 2w 。
- 在有基础性能的指标后,再结合压测的果和情况,以明确瓶颈点大概出现在哪个节点
4.确定性能得瓶颈点
- 通过对 基线的统计 和资源监控情况的分析 ,确定 cpu、 网卡、IO 等是否出现资源瓶颈
5.确定是否优化
如果问题出现在 涉及操作系统、 中间件、 JDK JDK、驱动 、驱动 等核心工作机制 ,这 些是不能进行代码修改的,只考虑 进行组件的升级。
如果涉及的是应用程序代码层 ,则可以考虑进行下优化 :
-
- 使用对象池减少重复的创建 ;
-
- 调整对后端的连接
-
- 增加本地缓存
-
- 如果不涉及事务的情况下,考虑使用 NosqlNosql Nosql进行存储 进行存储
-
- 一次请求合并多操作。
-
- 由串行修改为并操作
-
- 同步 修改为异testfan