元旦前,一个现场反馈了一个问题,数据接入模块在处理数据上有一天的延迟,只能处理前天的数据。让现场发日志,发现没有他们所说的问题,都是当天数据当天处理。恰逢元旦前又发了一个升级版本,也就将这是忽略掉了。数据库
元旦后,又反馈了这个问题。昨天下午就和这个问题杠上了,遇到的问题包括:性能
1. 数据接入模块不是本身实现的测试
2. 数据接入依赖的前提条件复杂日志
3. 本次版本发布时log4j的配置有问题(文件被保存为带BOM的UTF-8格式)索引
全部的配置和发布版本的本地测试都是正常的;现场发回来的产品相关程序和配置在本地测试一样正常。最后将问题定位在依赖数据库上,发现操做的一张数据表没有进行分区和创建索引。产品
问题简单,定位问题花去了比较长的时间。在过程当中主要的盲点在于“有一天的延迟”的描述反馈的是性能问题,而我将之定位在功能问题。致使分析过程当中发生了较大的误差。软件
远程快速检测和定位问题,可做为以下措施:配置
1. 软件正常运行依赖部分前提条件,提供脚本检测前提条件,定位出可能存在的前提条件相关问题程序
2. 在日志中记录可能涉及性能的模块记录时间开销,用于评估现场版本的性能开销数据
3. 对于开销超过预期的任务,主动将其截止,反馈结果、保存相应数据和日志信息