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