ASP.NET性能最佳实践

根据MSDN webcast 整理
  • 逻辑/物理设计实践
  • 推荐 : 使用逻辑三层模型
    1. 页面(.aspx)和用户控件(.ascs)
    2. 可重用类型(组件)放在\bin目录下
    3. 数据放在SQL数据库中
    推荐 : 为Web Farm设计
    1. 不要假定访问者永远会回到同一服务器
    2. 注意静态变量和应用状态
    3. Web Farm会话状态
    推荐 : 用同一个进程
    应避免(可能时):
    1. 对XML Web服务的同步调用
    2. 通过DCOM的远程调用
    使用XML Web 服务 :
    1. 因特网上应用之间的通讯
    2. 不要用于应用内通讯
    推荐 : 使用ISA服务器,当需要DMZ安全域时 :
    1. 只允许通过ISA访问
    2. ISA隧道通过DMZ到达ASP.NET
    3. 减少进程转换
  • 语言/代码建议
    1. 避免使用晚绑定
      1. <%@ Page Language = "VB" Explicit = "true" %>要求声明所有变量类型,依然允许晚绑定
      2. <%@ Page Language = "VB" strict = "true" %>禁止使用任何晚绑定
  • COM交互建议
    1. 尽量少使用COM,而使用托管的组件
  • 数据建议
    1. 将数据存储在SQL Server中
    2. 选择合适的数据访问方式 : OLEDB/SQL client/ODBC
    3. 合理选择DataSet和DataReader 进行数据访问
  • 状态管理
    1. 选择合适的方式存放Session : Inproc/StateServer/database
    2. 使用简单数据类型
    3. 避免在Session中保存STA的COM对象
    4. 如果不需要Session,则禁用它 : EnableSessionState = "false"
    5. 如果可能,可使用readonly特性 : EnableSessionState = "Readonly"
    6. 哪果不需要ViewState则禁用它, EnableViewState = false
    7. 最小化ViewState中的数据
    8. 查看ViewState的大小查看HTML输出源码或者启用Trace
  • 使用缓存
    1. 页面缓存
    2. 部分页面缓存
    3. Cache对象
    4. 数据缓存
    5. WebService缓存
    量化WEB性能的方法: 机器吞吐率 响应时间 通过给服务器加负载来测试
  • 使用多台客户端机器加载
  • 免费Microsoft Web Application Stress
  • 测试多种场景
    1. 模拟对站点的端对端场景遍历
    2. 测试单页性能
  • 需要计算的数值
    1. 不同负载下的Request/sex(100,250,500,750,1000等同时访问的客户)
    2. 辨明在可接受TTFB/TTLB响应时间内的最大客户负载
    关键的性能计数器
  • 处理器,CPU%使用率 || 低数值 = 受阴或者锁竞争
  • ASP.NET,入列请求数 || 线性增长意味着服务器已满负荷
  • ASP.NET应用,每秒请求数||动态吞吐量(应当一致)
  • ASP.NET应用,总错误数 || 指示功能错误(应当是0)
  • ASP.NET应用,工作进程重启 || 指示严重功能错误
  • posted on 2006-03-29 18:29  沙加  阅读(1054)  评论(0编辑  收藏  举报

    导航