背景:

  1. 业务复杂
  2. 接口繁多
  3. 并发度高
  4. 访问量大

关注点:

  1. 性能指标
  2. 模块之间的关联
  3. 知识和方法论结合

性能问题的3种形态:

  1. 性能故障正在发生
  2. 故障发生了,又自动好了
  3. 故障还没有发生,但是在发生的路上

总体优化思路:

  1. 重要的前提:
    1. 了解业务的特点
    2. 掌握基线信息
    3. 确保有序调优:
      1. 先平台后应用
      2. 先整体后局部
      3. 先动态再静态
  2. 看时间消耗分布:
    1. 响应时间的整体分布状况
    2. 分析时间都消耗在哪些模块,应用,sql。
  3. 应用优化五步:
    1. 系统调研
      1. 业务背景
        1. 所在行业
        2. 使用人群
        3. 负载情况
          1. 在线用户数量
          2. 繁忙时段
      2. 技术架构:
        1. 软硬件清单:
          1. 应用软件部署清单:
            1. 前台
            2. 后台
            3. 数据
          2. 硬件平台清单:
            1. 主机
            2. 网络
            3. 存贮
        2. 架构拓扑图
        3. 接口情况描述
      3. 系统类型
        1. 业务类型
          1. 生产型7×24
          2. 辅助型可停机
        2. 交易类型
          1. OLTP
          2. OLAP
          3. OLTP和OLAP混
      4. 掌握基线信息
        1. 数据库
        2. 主机
      5. 了解系统的状况
        1. 故障正在进行
        2. 故障发生了,又自动回复
        3. 故障将会来
    2. 信息收集
      1. 部署第三方监控工具:
        1. FFCS_ITSM
        2. DT
        3. I3
        4. NMON
      2. 系统自带工具:
        1. 平台信息
          1. 动态
          2. 静态
        2. AWR, ADDM, ASH
        3. JVM
        4. 各种日志
      3. 自己写的脚本工具:
    3. 问题定位:
      1. 定位手段:
        1. 系统资源情况
        2. 响应时间模式:
          1. 单笔交易全生命周期的时间分布
          2. 整个系统的总体交易的时间分布
      2. 定位目的:
        1. 内部系统问题还是外部接口问题
        2. 整体问题还是局部问题
          1. 整体问题
            1. 数据库整体问题
            2. 前后台应用程序
          2. 局部问题
            1. 某个模块慢
            2. 某个菜单慢
          3. 资源问题还是应用问题:
            1. 资源问题
              1. 平台硬件不足
              2. 其它程序耗尽资源
            2. 应用问题
              1. 落在哪个应用区域
              2. 落在哪个接口模块
              3. 落在哪个具体方法或sql
    4. 分析解决
      1. 资源使用率分析:
        1. 分析:
          1. CPU内存IO不足
          2. 网卡流量过大
          3. 存储故障
        2. 解决:
          1. 扩容策略:
            1. 更换服务器,存储
            2. 增加CPU内存等
          2. 资源重组:
            1. 移除无关应用
            2. 调整资源分配
              1. 根据全天压力情况,分时段错开跑资源
              2. 根据机器忙闲程度,合理分配不同应用在不同主机上。
      2. 应用分析:
        1. 应用程序分析解决
          1. JAVA
            1. GC挂起过大
            2. weblogic参数配置有误
          2. C/C++
        2. 数据库分析解决:
          1. 代码问题:
            1. SQL
            2. PLSQL
          2. 模型设计问题
            1. 表的设计
            2. 索引的设计
            3. 范式
          3. 参数问题
        3. 架构分析解决:
          1. 缓存
          2. 异步
          3. 并行
          4. 分布
          5. 集中
    5. 总结跟踪:
      1. 总结:
        1. 本次调优报告
        2. 本次实施各种文档
        3. 经验教训:
          1. 缺少上线前的性能压力测试:
            1. loadrunner
            2. ffcs拨测工具
          2. 操作不当:
            1. 未按规范打补丁
            2. 功能升级引入bug
          3. 未来业务发展量预估不足
          4. 研发维护人员技能不足
      2. 跟踪:
        1. 日常巡检
        2. 趋势分析
        3. 相关培训
          1. 本次调优案例总结
          2. 类似案例分享
posted on 2015-04-27 04:28  alexblog  阅读(1564)  评论(0编辑  收藏  举报