博睿与中国南方航空成功案例详情展示
挑战
首先是在系统承受并发压力增大的情况下,如何保障业务顺利开展。业务顺利与系统的健壮性不可分离,业务上线前,在测试环节定位性能问题和优化是前提,上线后实时对多种语言、后端系统统一监测并能预警与溯源是保障;引入APM(应用性能管理)系统对保证系统健壮性与提升用户体验非常重要。
解决方案
实时监控应用系统状态,开发运维及管理人员可以第一时间了解系统健康状态。从大量后端应用服务和数据库服务中,快速定位耗时最长、调用次数最多的逻辑单元,帮助运维开发人员收敛系统故障点。深度追踪异常用户体验和应用性能,在代码级别、SQL语句级别、页面加载逻辑单元级别,提供问题根源定位。系统升级前后数据对比,通过报表呈现,可有效的追踪不同的性能指标趋势,从而为建立优化管理制度打下基石。
1
某次系统升级后发现国际查票回程业务经常出现缓慢,通过博睿Server监测,发现主要受以上类、方法的调用耗时较长导致
以其中一次慢业务过程为例,快照分析中可以看到主线程自身处理时间143572ms,且有21次NoSQL调用,平均1.62ms, 其中sun.misc.Unsafe:park自身处理时间142455ms,主要由于该请求多次重复调用Nosql失败后请求超时,产生死锁导致。通过修改redis超时参数后修复
2
通过分析移动APP后台的DB发现个别SQL语句调用时间过长
以上为调用SQL(select a.id from csmbp_nps…)的健康变化趋势图,发现该SQL涉及的业务为推送订阅的航班动态
通过某次快照分析中可以看到MYSQL调用耗时占总耗时的99.2%,经DBA针对此进一步分析后发现该SQL会占用应用数据库连接,导致应用在运行一段时间后异常缓慢,无法正常对外服务,通过调整SQL后恢复正常
发生最多的错误原因为SocketTimeroutException,错误占比60.07%
该错误主要是移动APP后台调用外部服务接口时等待超时
3
以其中一次错误为例,快照分析中可以看到错误详情java.net.SocketTimeoutException:Read timed out即调用外部服务等待超时。快速定位问题原因为外部系统导致,将该问题传递给外部系统管理人员解决
4
票价查询业务通过博睿Server探针监测,发现其业务过程缓慢主要受以上类、方法的调用耗时较长导致
以其中一次慢业务过程为例,快照分析中可以看到主线程自身处理时间22680ms,其中com.csair.veda.domain.fare.fq.FqMinaClient:queryAsync自身处理时间19431ms,占比85.67%。导致查询票价结果超时
客户对APM系统进行分期建设,目前二期项目将继续由博睿承担建设,二期将更全面地在后台多个系统应用上部署博睿server探针,未来还将融合客户现有的ELK日志系统、运营平台数据、实现端到端的全业务链监控。