.NET性能优化

性能优化的指标和目标

性能目标,需求确定后,需要决定大体性能目标,在开发运营过程中调整目标。

举例:

1.购物车并发用户量不超过5000,需要300ms内处理完成“重要”类别下任意页面请求。

2.应用程序单个空闲用户会话的内存占用不能超过4kb

3.在不超过10台应用服务器访问的情况下,数据库服务器CPU和磁盘利用率不超过70%且能在75s内返回“常用”分类下的查询请求。

性能指标关注点:在一定数量并发活跃请求和一定的在线用户数下,单个请求处理时间,内存占用,CPU使用,页面失效次数

性能目标确定后,需进行性能测试,负载测试,以及后续优化。

总结:

对于客户端应用:关注启动时间,内存占用,CPU占用率

WEB应用:内存使用量,数据库访问,网络,磁盘操作,响应时间

系统算法服务应用:关注CPU占用率,缓存失效,竞争,内存分配,垃圾回收

性能指标可以在不同粒度下测试,内存的分配和执行时间可以在系统级别,单进程级别,独立方法,甚至代码行测量。

相对于整体CPU占用率或进程级别的执行时间来说,特定方法的执行时间可能更易于操作性能指标。

不幸的是提高测量粒度会给性能本身带来负担。

性能指标列表:

CPU使用率 百分比

物理/虚拟内存占用 字节B 千字节KB MB GB

缓存失效 次/秒

页面失效  次/秒

数据库访问次数及耗时 次/秒 ms

内存分配  字节,对象数量 ,秒/次

执行时间 ms

网络操作 次/秒

磁盘操作 次/秒

响应时间 ms

垃圾回收 次/秒 耗时 ,占总时间百分比

抛出异常  次/秒

启动时间 ms

竞争   次/秒

开发周期中的性能:

1.需求收集阶段:开始思考设置怎样的性能目标

2.架构阶段:提炼各项总要指标,定义他们的具体性能目标

3.开发阶段:对原型代码或局部实现的功能进行比较频繁的探索式性能测试,确保满足系统的性能目标

4.测试阶段:大量的负载测试和性能测试,检测是否满足系统的性能目标

5.维护:每个版本额外的负载和性能测试(每周每天),快速发现系统中性能的退化

如何开发一套自动负载测试和性能测试工具,搭建独立的实验环境,分析测试结果呢?

猜你喜欢

转载自www.cnblogs.com/fmys/p/9912154.html
今日推荐