作为一名运维工程师,你是否遇到过所负责的IT系统突然变慢却无所适从,又或者所负责的系统在渐进式的变慢时而作为责任人你却没有及时的觉察,在用户把问题反馈过来时,却因时间的跨度太久导致积重难返,甚至不得已被迫调整业务逻辑或者降级服务?从而导致了客户对我们的服务产生不满,领导对我们的应急处置能力产生质疑。那如何破解这样的一个被动式运维、四处疲于救火的难题?又如何提高我们的快速定位问题的能力呢?
本文就以上问题并结合笔者的经验进行了总结与分析,以供行走在运维一线的且面临同样的困扰的博友们学习和参考,如有不足之处烦请多多批评与指正。其中本博文为连载,共分为上中下三篇,上篇为方法论,中、下篇是根据上篇的思路,本着理论指导实践的原则,着重描述如何更快的找出导致系统变得慢原因的案列分享。
言归正传,直接上图。具体解决系统运行缓慢的思路如下图,请参考:
在遇到系统性能问题时上图解决问题大致思路如下所示:
第一、首先要清晰的定位出是系统整体变慢还是部分功能导致的系统变慢;
第二、在此基础上再进行细分是突发方式变慢还是渐进式变慢;
第三、如果是突发式变慢,那么有80%以上的可能是我们做了操作变更或者系统出现了故障(解决方法:回退操作、解决故障);
第四、如果是渐进式变慢,那么我们需要进行分析该系统最近三个月或者一年的容量趋势图及系统及业务性能表现,进行容量评估与管理和性能评估与管理,最后并制定优化后的期望目标(解决方法:扩容、优化相关系统或者中间级的参数、调整业务逻辑、架构等);
第五、部分模块运行缓慢或者部分模块导致的系统运行缓慢的问题,进一步分析是否有规律;
第六、对于有规律的变慢,我们可以通过nmon采集系统性能数据及使用快照等工具抓取执行成本高的SQL进行分析与优化(解决方法:包括但不限于系统参数、中间件全局参数及SQL的优化调整)
第七、对于无规律的无法复现的问题,需要综合进行考虑是否有外部程序的干扰等因素进行定位问题。
以上未完待续.............
如有不足之处欢迎随时交流!下篇将为大家带来实际的分析案列,欢迎关注我的博客~