ASP.NET性能最佳实践
2006-03-30 17:05:27 来源:WEB开发网核心提示:根据MSDN webcast 整理 逻辑/物理设计实践推荐 : 使用逻辑三层模型 页面(.aspx)和用户控件(.ascs) 可重用类型(组件)放在\bin目录下 数据放在SQL数据库中 推荐 : 为Web Farm设计 不要假定访问者永远会回到同一服务器 注意静态变量和应用状态 Web Farm会话状态 推荐 : 用
根据MSDN webcast 整理
逻辑/物理设计实践
推荐 : 使用逻辑三层模型
页面(.aspx)和用户控件(.ascs)
可重用类型(组件)放在\bin目录下
数据放在SQL数据库中
推荐 : 为Web Farm设计
不要假定访问者永远会回到同一服务器
注意静态变量和应用状态
Web Farm会话状态
推荐 : 用同一个进程
应避免(可能时):
对xml Web服务的同步调用
通过DCOM的远程调用
使用XML Web 服务 :
因特网上应用之间的通讯
不要用于应用内通讯
推荐 : 使用ISA服务器,当需要DMZ安全域时 :
只允许通过ISA访问
ISA隧道通过DMZ到达asp.net
减少进程转换
语言/代码建议
避免使用晚绑定
<%@ Page Language = "VB" Explicit = "true" %>要求声明所有变量类型,依然允许晚绑定
<%@ Page Language = "VB" strict = "true" %>禁止使用任何晚绑定
COM交互建议
尽量少使用COM,而使用托管的组件
数据建议
将数据存储在SQL Server中
选择合适的数据访问方式 : OLEDB/SQL client/ODBC
合理选择DataSet和DataReader 进行数据访问
状态管理
选择合适的方式存放session : InPRoc/StateServer/database
使用简单数据类型
避免在Session中保存STA的COM对象
如果不需要Session,则禁用它 : EnableSessionState = "false"
如果可能,可使用readonly特性 : EnableSessionState = "Readonly"
哪果不需要ViewState则禁用它, EnableViewState = false
最小化ViewState中的数据
查看ViewState的大小查看HTML输出源码或者启用Trace
使用缓存
页面缓存
部分页面缓存
Cache对象
数据缓存
WebService缓存
量化WEB性能的方法: 机器吞吐率响应时间通过给服务器加负载来测试
使用多台客户端机器加载
免费Microsoft Web application Stress
测试多种场景
模拟对站点的端对端场景遍历
测试单页性能
需要计算的数值
不同负载下的Request/sex(100,250,500,750,1000等同时访问的客户)
辨明在可接受TTFB/TTLB响应时间内的最大客户负载
关键的性能计数器
处理器,CPU%使用率 || 低数值 = 受阴或者锁竞争
ASP.NET,入列请求数 || 线性增长意味着服务器已满负荷
ASP.NET应用,每秒请求数||动态吞吐量(应当一致)
ASP.NET应用,总错误数 || 指示功能错误(应当是0)
ASP.NET应用,工作进程重启 || 指示严重功能错误
逻辑/物理设计实践
推荐 : 使用逻辑三层模型
页面(.aspx)和用户控件(.ascs)
可重用类型(组件)放在\bin目录下
数据放在SQL数据库中
推荐 : 为Web Farm设计
不要假定访问者永远会回到同一服务器
注意静态变量和应用状态
Web Farm会话状态
推荐 : 用同一个进程
应避免(可能时):
对xml Web服务的同步调用
通过DCOM的远程调用
使用XML Web 服务 :
因特网上应用之间的通讯
不要用于应用内通讯
推荐 : 使用ISA服务器,当需要DMZ安全域时 :
只允许通过ISA访问
ISA隧道通过DMZ到达asp.net
减少进程转换
语言/代码建议
避免使用晚绑定
<%@ Page Language = "VB" Explicit = "true" %>要求声明所有变量类型,依然允许晚绑定
<%@ Page Language = "VB" strict = "true" %>禁止使用任何晚绑定
COM交互建议
尽量少使用COM,而使用托管的组件
数据建议
将数据存储在SQL Server中
选择合适的数据访问方式 : OLEDB/SQL client/ODBC
合理选择DataSet和DataReader 进行数据访问
状态管理
选择合适的方式存放session : InPRoc/StateServer/database
使用简单数据类型
避免在Session中保存STA的COM对象
如果不需要Session,则禁用它 : EnableSessionState = "false"
如果可能,可使用readonly特性 : EnableSessionState = "Readonly"
哪果不需要ViewState则禁用它, EnableViewState = false
最小化ViewState中的数据
查看ViewState的大小查看HTML输出源码或者启用Trace
使用缓存
页面缓存
部分页面缓存
Cache对象
数据缓存
WebService缓存
量化WEB性能的方法: 机器吞吐率响应时间通过给服务器加负载来测试
使用多台客户端机器加载
免费Microsoft Web application Stress
测试多种场景
模拟对站点的端对端场景遍历
测试单页性能
需要计算的数值
不同负载下的Request/sex(100,250,500,750,1000等同时访问的客户)
辨明在可接受TTFB/TTLB响应时间内的最大客户负载
关键的性能计数器
处理器,CPU%使用率 || 低数值 = 受阴或者锁竞争
ASP.NET,入列请求数 || 线性增长意味着服务器已满负荷
ASP.NET应用,每秒请求数||动态吞吐量(应当一致)
ASP.NET应用,总错误数 || 指示功能错误(应当是0)
ASP.NET应用,工作进程重启 || 指示严重功能错误
- ››asp.net页面弄成伪静态页面
- ››Asp.net 中将汉字转换成拼音的方法
- ››ASP.NET及JS中的cookie基本用法
- ››ASP.NET获取MS SQL Server安装实例
- ››asp.net实现调用百度pai 在线翻译英文转中文
- ››ASP.NET页面选项进行提示判断
- ››Asp.net定时执行程序
- ››ASP.NET中利用DataList实现图片无缝滚动
- ››ASP.NET验证控件RequiredFieldValidator
- ››ASP.NET中使用System.Net.Mail发邮件
- ››ASP.NET中获取用户控件中控件的ID
- ››ASP.NET中FileBytes写成文件并存档
更多精彩
赞助商链接