Troubleshooting 专题 - 问正确的问题 得到正确的答案
在很多公司中,IT、数据中心、业务系统一出故障,会有很多人被叫到作战室(就是一个为了解决该问题,而把所有相关人员集中在一起的一个会议室), 但是对于这个问题他们是否可以修复, 是否他们应该负有责任, 经常没有线索.
「证据」(基础架构监控数据, 日志文件, 用户投诉等等) 表明了症状, 但是与 root cause 无关. 只有很多的日志信息和高级别的告警并不会给你与这个问题根因真正相关的答案.
为了远离这种场景, 真正的「证据」应该是什么? 你应该问什么问题?
是一个用户抱怨还是所有用户都受影响?
「只是」CEO 抱怨一个问题, 因为一份 BI 报告在他的老 IE7 上无法工作? 或者「只是」使用联通上网的终端用户? 了解一个问题发生在非常小的用户群, 还是说全中国的用户都受到影响, 是重中之重.
交付链(如: CDN, 第三方, ISP, 云供应商, 托管服务, 手机网络)有问题么?
当代 web 应用、移动服务、互联网服务、O2O业务等依赖一长串交付链的服务. 知道每个的影响会告诉你是否应该检查自己的数据中心, 还是说应该打电话给服务商.
关键事务是否受影响?
是否关键业务比如保险投保受到影响? 还是说报错的页面早已经不用了? 你需要监控最关键的业务性能.
是这个应用的问题么?
应用很复杂. 如果你知道问题是发生在这个应用里, 你然后需要进行故障隔离, 然后让对应的开发和架构师定位问题效率更高.
这个问题与糟糕的代码有关么?
如果客户使用加载缓慢、体验很差,应用响应时间很慢, 第一个问题应该是是否与糟糕的代码有关. 你需要分析代码级别的性能热点来找到是否原因是低效的算法还是缺乏代码和架构的最佳实践.
这个问题在虚拟机、容器、中间件...里么?
如果虚拟机(如:VMware, EC2...)或你的容器(Docker)或你的中间件或你的应用运行时(如:tomcat)没有正确的 size, 或者和其他虚拟机及容器存在资源争用也可能引起性能问题. 如果你知道虚拟机的性能影响到了应用, 你会知道引入 VM 专家, 而不是应用开发, 来解决这个问题.
容器、中间件、应用运行时同理。
是基础架构导致的问题么?
如果不是应用自身问题, 而是因为 app 运行在资源不足的基础架构上会怎样? 如果需要运行垃圾回收的 CPU 因为超用导致不可用会怎样? 那么是时候考虑拆分应用或扩展基础架构了.
是应用服务器的问题么?
因为不正确的配置或错误的部署, 应用服务器也可能是性能问题的原因. 正确的资源池(线程, 数据源等)大小, 安全配置或日志参数都会影响性能. 如果发现是应用服务器的问题, 如果是商业应用服务器,你需要联系 IBM, Oracle, 微软专家;如果是开源应用服务器,你需要联系贵司的相关中间件专家.
总结
有了这些问题的答案, 你可以消除作战室, 迅速定位问题根源, 优化并找到解决方案. 所以不需要 20 人的作战室, 你只需要3个人 - 一个开发, 一个测试, 一个运维 - 评估详细的性能 insight, 并引入需要的专家. 完美!
三人行, 必有我师; 知识共享, 天下为公. 本文由东风微鸣技术博客 EWhisper.cn 编写.
Troubleshooting 专题 - 问正确的问题 得到正确的答案的更多相关文章
- modelsim仿真正确FPGA运行不正确的可能原因 - cm4写寄存器错
困住整整一周了,工作进行不下去,中午偶遇导师,指导意见是有两种可能: 1. FPGA编译器优化代码,可以考虑把综合过程中所有的warning排查一下 2. verilog里有不可综合的语句. 又及 ...
- 【笔记】关于jq $.ajax 函数 success回调函数不能赋正确值或返回正确值的问题
最近在一个项目里面打算实现如下功能: 当我注册账号的时候当输入账号完毕后输入框失焦时执行一个 ajax 请求,验证账号是否被注册,并未这个输入框的 isCorrect属性赋值,如果没有被注册 isCo ...
- STM32F429时钟不正确导致串口无法正确收发
老早之前自己做了块F4的板子,设计原理图时没有去找官方参考,看了手册后就开工了,做完板子回来测试串口发现PC端接收到的都是乱码,尝试了几种波特率也没能正确接收,串口的代码是官方参考例程的,不应该有问题 ...
- 正确分析结构使用正确的HTML标签。CSS样式写一起。
在内容中 一行内容包括三张图片,每张图片下面有标题和具体介绍,那么可以使用: 分析和解决如下步骤: 1,一行三块,先向左浮动成为一行float:left. 2,把他们的宽度平分三份,33.3%.三份都 ...
- 大小厂必问Java后端面试题(含答案)
你好,我是yes. 这个系列的文章不会是背诵版,不是那种贴上标准答案,到时候照着答就行的面试题汇总. 我会用大白话尽量用解释性.理解性的语言来回答,但是肯定没有比平时通过一篇文章来讲解清晰,不过我尽量 ...
- 需要正确安装 Microsoft.Windows.ShellExperienceHost 和 "Microsoft.Windows.Cortana" 应用程序。
windows 10 开始菜单修复工具 Win10开始菜单修复工具出现的原因,自从升级到Windows 10,一直BUG不断,而其中有一个BUG非常的让你印象深刻,就是开始菜单无响应,你用着用着电脑 ...
- 如何正确使用Cocoapods
➠更多技术干货请戳:听云博客 一.介绍Cocoapods Cocoapods是引入为项目引入新血液的接口,只有引入了新血液,功能才可以多样化,进而满足不同的消费群体.使用Cocoapods可以方便日后 ...
- 第一个python程序-判断登陆用户名和密码是否正确
#setencoding=utf-8 #用户名和密码输入正确,则登陆成功 #用户名正确密码错误,只再输入密码,有3次机会 #错误3次,则把用户名放入lock中 import os,sys #存放用户名 ...
- 脚本重定向输出【错误、正确】——分析service脚本中用到的语法
<1> >&2 即 1>&2 也就是把结果输出到和标准错误一样:之前如果有定义标准错误重定向到某log文件,那么标准输出也重定向到这个log文件如:ls 2&g ...
- js&jquery验证邮箱和手机号是否正确范例
实现源码: <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> ...
随机推荐
- Vue获取DOM的几种方法
虽然Vue实现了MVVM模型,将数据和表现进行了分离,我们只需要更新数据就能使DOM同步更新,但是某些情况下,还是需要获取DOM元素进行操作(比如引入的某个库要求传入一个根dom元素作为根节点,或者写 ...
- 【NumPy】Python将数组中低于一定百分比的值替换
情景举例 现有一个一维数组(或二维进行遍历)存放着很多,找到低于中位数20%的值并将小于该值的数全部替换为该值. 涉及方法 np.median(data, axis=0)用于计算数组中元素的中位数(中 ...
- Email Windows发送成功,Linux却发送失败的可能原因
一.linux端口被禁用,通过telnet查看.(我这里没问题) 二.排查环境参数是否一致(我这里没问题) 三.查看jdk版本原因,因为jdk1.8有的版本禁用了ssl 参阅文档:https://bl ...
- 反序列化 sqlserver 中的 sysdiagrams,找到其中包含的表的信息
转载于:Script SQL Server 2005 diagrams to a file - CodeProject /** <summary> Based on ufn_Varbina ...
- PLC入门笔记7
梯形图与指令表的转换 后缀表达式 开头是MPS 结尾是MPP 中间就是MRD啦!!!! MPS 存入堆栈(将目前累加器的内容存入堆栈.(堆栈指针加一))将当前数据栈顶数据复制一份到辅助栈 栈深度+1 ...
- java计时器Timer
基于java的计时器,定时发送消息 package timer; import java.lang.reflect.Array; import java.text.ParseException; im ...
- eclipse project is missing required java project
eclipse project is missing required java project eclipse版本: 2022-03 这情况就是maven包出了问题 具体的说不上 看我的解决方法: ...
- CentOS安装并查看lm_sensors CPU温度监控
CentOS安装并查看lm_sensors 首先查看是否安装rpm包: [root@localhost home]# rpm -qa|grep sensors lm_sensors-libs-3.1. ...
- 在VS中使用Wind数据终端API的经验(一)
因工作需要,使用vs2019来调用Wind金融终端API数据接口.具体步骤按照wind的帮助文档一步步做下来.这里提一下和帮助文档不同的地方. Windows Console APP下,编译项目后出现 ...
- 关于Maven的使用
Maven基础入门 一.maven是什么 Apache Maven,是一个项目管理及自动构建的工具,有Apache软件基金会所提供. Maven是用Java语言编写的,是一款可以跨平台的软件. Mav ...