大家好,这里是「聊聊系统优化 」,并在下列地址同步更新
- 博客园:http://www.cnblogs.com/changsong/
- 知乎专栏:https://zhuanlan.zhihu.com/youhua
- 全网私活,免费订阅: http://www.zsihuo.com
在这里我会从基于J2EE系统及互联网架构方面,来谈谈系统优化的各个方面,干货满满,欢迎订阅及关注!
前言
新上线系统,为公司业务发展助力,大家满怀期待, 系统除了在业务上满足需要,为客户带来价值。在上线后系统是否能承受住线上压力,在高峰会不会挂掉,给公司带来损失,因此在系统上线前越早做一些事情保障未来线上平稳运行越安全。
系统预评估
首先一般会对系统进行预评估,到底系统有多少用户在线,同时某个功能有多少人使用。需要对重要的接口进行压力测试,根据压测结果评估是否可以上线。
压力测试前要做的事情
- 梳理数据库表结构,事先建立合理的索引
- 梳理业务SQL,让所有SQL尽量用上索引, 重点关注查询频繁及涉及大表的SQL
- 建立模拟外部环境,可以使用MockServer模拟第三方接口返回
- 评估测试环境及生产环境机器性能差异,建立合理的评估值
- 测试数据尽量能覆盖尽可能多的业务分支
怎么能发现系统的薄弱环节
- 优先关注数据库相关问题
- 优先关注系统单点问题
数据库是系统的单点,如果在线上出现问题,结果是灾难性的,如果是应用还可以通过新建实例来增加系统处理能力, 数据库则没有很好的方法在线上做扩容,而不影响业务。
压力测试
- 推荐Jmeter压力测试工具,基本能满足所有的测试场景
- 设计压力测试场景,每种测试场景多少并发,并发时长
- 压力过程中监控jvm,机器内存及CPU指标