ASP.NET 性能笔记 一
第一章 性能的概念
一、性能的含义
1、 性能
表示系统执行任务的速度和效率。最重要的因素是从用户的角度看性能怎样!
2、最重要的测试数据
是站点能够服务的每秒页面数(有时候称为页面吞吐量),通常和其他两个数据一起衡量:
1) TTFB―― 从请求到收到第一个字节的时间
2) TTLB―― 从请求到收到最后一个字节的时间
TTFB和TTLB的值越小,两个值越接近,用户感觉站点响应性越好。同时注意CPU的占有率控制在 80% ~90%比较好]
3、最大容量是在维护可接受的响应时间的条件下能够处理的并发连接的总数。
二、性能和可伸缩性
1、 垂直扩展
替换升级现有硬件,或者添加新的硬件
2、 水平扩展
添加新的服务器并把负载分布在各台服务器之间 Win2k Adv Server(Net Load Balanceing NLB网络负载平衡)
3、 代码优化
三、具体环境的性能
1、 考虑对代码质量的影响――不要牺牲代码质量
关键是注意不要影响代码的可读性。
2、 代码不是唯一要考虑的问题。
例如在哪里托管、如何交互多媒体内容
3) 不总是技术问题
(1) 人的因素
(2) 不同的带宽提供不同的服务
(3) HTML编写的好坏。不要把每个内容都添加到一个大表中
3、 托管
选择主机时,问一下Internet连接问题。你的主机位于网络什么位置,最好的主机有多条专用链路连接到不同的地理位置。在Internet 连接性方面宿主提供什么样的冗余?
4、 特定环境下的性能监控
1) 高带宽内容
带宽和托管的继承结构起关键作用
2) 低带宽但高动态内容
a) 缓存是保证高性能的关键
3) 内部网
伸缩性不像性能一样收到关注
4) 高交易型
数据库是关键
四、性能即过程
1、 概述
应该在项目的整个生命周期一直考虑这个问题
2、 需求收集
在开始体系结构工作和编码之前,从以下方面了解站点的需求十分重要:
响应时间、预期的访问者数量、预期的增长率和可能引发问题的意外情况。如果最初很难得到,就需要从业务规划和目标向回推算。看一下你预期的通信量是多少,然后计算出峰值容量可能有多大――使用 80/20法则,即80%的通信量只集中在20%的时间里,确保你的站点能够承受比平均峰值大5倍的容量。如果不能确定站点的通信量将是多少,就计算满足预期收入(假设是电子商务站点)所需的通信量是多少,用一个较低的浏览者到购物者的转换比例,然后向回推算。
规划异常事件和规划长期增长同样重要。
在需求收集和规划阶段,一个好的做法是在开发的早期到中期阶段包括必要的实践来测试开发工作正在按体系结构和设计进行,并通过对站点尽可能多的已完工部分进行压力测试。
3、 软件体系结构
将如何访问数据?缓存策略是什么?在体系结构阶段指定出数据设计和存储的原则是非常关键的。组件彼此如何通信?软件体系结构如何转换为物理实现?是否设计一个物理的应用层或者所有的组件都放在前端的服务器上
4、站点编码
5、测试
最大的错误就是把压力测试留在开发已经完成,站点即将投入运行时进行。
6、从用户体验的角度测试
保证站点在通常运行的环境对它的性能进行常规测试
7、数据库
8、上线后的维护
9、 增长的数据库
五、 努力保持Web数据库的“精简”――膨胀的数据库不仅增加了访问的时间(确保使用最好的索引)
浙公网安备 33010602011771号