一.1. 常见问题列举
Ø cpu突然爆满、起飞。
Ø 服务器短暂无响应或假状态停机。
Ø 应用运行一段时间后变卡,提交请求明显速度下降。
Ø 页面响应慢,加载失败。
Ø 日志中出现大量数据库连接超时记录
Ø 某些固定时间点易发生服务停机或程序异常。
Ø 个别功能消耗资源过大影响整体速度显著下降。
Ø 打包发版后发现个别Class内函数没有按照预期逻辑执行。
一.2. 分析方法
围绕线上服务问题处理有两种最基本的分析方法:现场分析和事后分析。现场分析通过保留现场,采用诊断工具分析定位,现场分析对线上影响较大,一些场景(如关键业务运行高并发期)不太合适。事后分析则需要尽可能多收集现场数据后,然后立即恢复服务不影响业务,再针对收集的现场数据进行事后分析和复现。
一.3. 分层定位
应用层通过Java线程堆栈定位问题代码,分析代码逻辑。
数据库层通过定位死锁、分析慢SQL等。
框架层则需要理解框架机制。
JVM层需要对GC的类型和工作机制有深入了解,熟知常用的JVM参数作用。
一.4. 项目案例
以下列举的几个项目案例在第五章节做一部分场景还原和处理演示 |
||
项目 |
现象 |
处理方案 |
隐去 |
应用运行一段时间后开始变慢卡顿,重启恢复正常,往复出现。 |
JVM调优 |
隐去 |
服务器偶现个别时间段无响应,大量异常日志出现。 |
JVM调优 |
隐去 |
影像接口日志代码被屏蔽,重扫影像异常,无法记录具体错误日志。 |
Arthas监控+热部署 |