您的故障排除规则,故障排除方法?[关闭]


22

在解决棘手的网络/硬件/软件问题时,您是否有任何通用规则可以依靠?

例如:“我通过使用第二台计算机测试外围设备来隔离问题的根源”或“我尽可能地移除了硬件以打开设备电源,然后逐个添加组件,直到可以重现问题为止”等


也许我应该编辑标题。我只知道有人会回答“谢谢!我为此感到骄傲” ;-)
用户名2009年

Answers:


16

我只是为解决问题一段时间后为自己写下的要点清单:

  1. 您的主要目标是什么?应当简明扼要。这个目标应该非常特别。它不应该是一般性的。最好是一句话
  2. 你有什么问题 ?
  3. 一个问题还是多个问题?如果有很多,一次解决一个。
  4. 尝试在不同条件下重现该问题 。是否可以在所有可能的条件下复制?它说明问题的性质吗?
  5. 如果是紧急问题,是否有解决方法?尝试找到尽可能多的解决方法。
  6. 尝试对造成问题的原因进行尽可能多的猜测
  7. 尝试证明您的猜测, 尝试使用该系统。
  8. 对您要做的事情保持谨慎。一次做一件事。
  9. 跟踪您在做什么,已经尝试过的内容。
  10. 不要偏离您的主要目标。不断检查您是否仍在解决主要问题,而不是其他问题。
  11. 也不要固定

还有大量的调试规则,以PDF格式列出,其中包含示例和每条规则的说明。我无法快速找到PDF,但是我认为这是列表的张贴者:

在此处输入图片说明


15
  • 如果问题与互联网有关,则可能是DNS。

  • 如果问题很难诊断,则可能是RAM。

  • 如果问题出在Windows工作站上,则可能是重新映像最快的方法。

  • 如果问题是在星期五,那可能很严重。


我想对一个笑话发表看法,但这是准确的!
TessellatingHeckler,2010年

我喜欢#3;再真实不过了。
费德勒

10

我喜欢回到科学方法

来自(http://en.wikipedia.org/wiki/Scientific_method

  1. 定义问题
  2. 收集信息和资源(观察)
  3. 形式假设
  4. 进行实验并收集数据
  5. 分析数据
  6. 解释数据并得出结论,将其作为新假设的起点
  7. 文件结果

通常,我总是喜欢尝试并仔细检查我的基本假设。它是否有电,是否已插入,接线是否良好。当电缆松动时,花几个小时尝试查看软件问题是非常烦人的。

我发现在假设创建阶段,尽可能多地提出问题的可能原因非常重要。然后,我根据测试的难易程度和想法的可能性来选择要首先测试的想法。

获得帮助也很重要。如果可以的话,请咨询您的同事,供应商或有关系统的最了解的人。如果有可用的人可以帮助您解决问题,请不要花费很多时间来解决问题。

奥赖利(O'Reilly)有一本不错的书《网络故障排除工具》,其中有很多步骤要遵循,这与科学方法非常相似。我发现这本书非常有用,强烈推荐。这本书更加详细,并提出了许多有用的工具。

网络故障排除工具

  1. 陈述你的目标
  2. 定义系统
  3. 确定可能的结果
  4. 确定并选择要测量的内容
  5. 如果合适,确定测试参数和因素
  6. 选择工具
  7. 建立测量约束
  8. 审查实验设计
  9. 收集数据
  10. 分析数据

也可以看看:


绝对是 尽管,步骤7有点令人讨厌。我的文档通常以“是的,它已修复。现在可以使用”的形式结束。
squillman

我尊重科学方法,认为我认为在该方法付诸实施之前,应该先克服一个人为因素。例如,我必须考虑报告的来源(报告问题的人)...并且要小心,不要假定他/她是“可信任的”来源(通过信任,我的意思是他/她将是一个好人。帮助我定义问题,收集信息并形成我的第一个假设的资源)。
l0c0b0x

10

(这些要点摘自“ 系统和网络管理实践 ”的“调试”一章)

有两件事要知道:

  1. 知道“固定”版本的样子。 最好是您可以运行的命令在工作正常时给出一定的输出。例如:我试图弄清楚为什么在正确设置密钥后(或因此认为)SSH要求输入密码。因此,我的测试是:“ ssh服务器名正常运行时间”,它应该工作而无需询问密码。

  2. 在正确的级别上描述问题。 用户抱怨无法对服务器执行ping操作,因此不应将您送去运行和修复服务器。这个人的工作不是整天围坐在一台机器上。他们希望完成某种任务,例如将计算机用作DNS服务器。示例:曾经有用户抱怨说他们无法遍及世界的一半对计算机进行ping操作。我花了一整天的时间跟踪公司那部分的系统管理员,以找出那台机器出了什么问题。它已退役,他们感到恐慌,因为他们认为可能是他们关闭了错误的机器。我与用户联系,并说:“除了需要ping通这台机器外,您想使用它做什么?”。原来,他想在上面执行某项工作,如果他一直遵循正确的程序,那么他的任务将自动重定向到替换机器上。我浪费了我整天和本地系统管理员的时间。“我无法ping”的另一个原因不是要测试的正确的事情:通常将防火墙配置为丢弃ping数据包,但允许其他数据包通过。测试您想要经历的。

两种策略:

  1. 添加剂: 继续添加组件,直到问题开始。您添加的最后一件事是问题。示例:Web浏览器无法与服务器通信。在服务器和用户之间是负载平衡器,防火墙,缓存和用户的本地Web代理。每次添加一个组件时,首先尝试直接将查询直接发送到服务器,然后通过LB发送到服务器,然后通过防火墙发送到LB到服务器,依此类推。

  2. 减法:继续移除组件,直到问题消除。您删除的最后一件事是问题:示例:一台包含数十张卡的计算机无法启动。继续取出卡,直到机器启动。

两点愚蠢的运气:

  1. 忘了我说的一切。 问题是由对系统的最后更改引起的。 (这在99%的时间内都有效...问题是您有99%的时间不知道最后一次更改实际上是什么)

  2. 当所有其他方法都失败时,请检查是否有愚蠢的事情。 http://whatexit.org/tal/mywritings/dumb-things-to-check.html 示例:疯狂的问题无法解释。然后,我们检查了配置文件:用户已经通过将其复制到Windows框,对其进行编辑,然后将其复制回来对其进行了编辑。现在,每行末尾都有一个^ M。我们从未注意到,因为我们的文本编辑器无声地隐藏了这一事实。可悲的是,读取配置文件的软件将这些^ Ms变成了一个不间断的空间,从而破坏了许多其他程序。


6

我记得整个过程中的一般做法:

  1. 写下我所做的一切。
  2. 一次仅更改一次。
  3. 如果可能的话,除非确定有进展,否则请在尝试另一项更改之前将其撤消。

在故障排除期间,这里定义了我的基本方法:

  • 当系统启动并运行良好时,在出现问题之前,我会尝试学习看看它在做什么。乔理查兹(Joe Richards)解释了为什么在这个狭窄的空间里比我能做的好得多
  • 我从最简单的解决方案开始。例如,没有网络连接?检查物理层。我不能告诉您多少次间歇性连接问题不是服务器问题,而是一半的网络电缆或坏了的网络电缆。
  • 在开始进行更改之前,我尝试捕获所有可能出现的症状。
  • 我运行初步诊断测试。例如,当我被告知服务器关闭时,我要做的第一件事是使用ping和nbtstat(Windows)进行验证。问题可能出在遥远的地方(借用了美国空军古老的技术控制说)。
  • 我不怕做研究。Google,support.microsoft.com,eventid.net和类似的网站是您的朋友。
  • 我不怕向社会寻求帮助。不仅是serverfault.com之类的网站,而且在与我保持联系的Twitter上,我有很多值得信赖和尊重的人。
  • 我会根据所看到的内容评估找到的答案。我不认为任何一种解决方案都是正确的解决方案,直到我可以对解决方案中报告的证据做充分的考虑。

6

我尝试并坚持的态度:

  • 因果关系起作用的绝对信心,没有什么是魔术。实际上没有发生任何奇怪的事情,只有我不了解的事情。
  • 绝对有信心,如果我继续努力,我将把它解决(这可能涉及将它带给知识渊博的人,学习,寻求帮助,努力等)。
  • 抱怨安装程序,程序或方案的设计错误或真正愚蠢无济于事,所以请不要这样做。(我觉得很难,抱怨很有趣)。

这些态度对我有帮助-阻止我向空中举起手臂,宣布一些“怪异”,然后放弃,或者因为感觉“无法解决”而变得不高兴。

我考虑疑难解答的方式:

  • 系统有很多部分,如果它们连接在一起或随机配置,则它们将无法按需工作。有一种或两种非常具体的配置将起作用-在数百万种用于堆砌砖和金属的方式中,只有少数是桥梁,只有一两种是足够好的桥梁。原因可能是文本文件中的字符或服务器发生故障,但每个部分都必须正确,以使整个过程正确。如果需要,我需要愿意彻底和细致。系统无法执行“表演必须继续”。
  • 您从一个像地图这样的整个系统开始,您想象在概率图上漂浮着代表“问题出在哪里”的概率云,而您的工作就是利用经验并找到测试来将概率推离某些领域并推向其他领域,将其压缩为高概率问题点,然后对其进行攻击。这回到了因果关系-问题出在系统中,这不是魔术。这是一个存在的问题,因此必须存在于某个地方。
  • 任何人都可以以任何方式设置任何东西。我们可以将一种行为定义为“确定”,将另一种行为定义为“问题”的唯一方法是,因为某人得到的不是他们想要的。您必须了解他们想要什么,他们正在清楚明确地获得什么。

故障排除过程:

  • 问题是什么。确保您看到它的发生并可以自己复制它,以免发生误解。因此,问题经常在我们的服务台上发生,直到他们到达我这里时,仍然没人能向我解释问题的真正含义。
  • 它是递归的二等分-分而治之,二进制搜索-您提出一个测试,它将证明问题是在测试的这一方面,还是在测试的那一边,并进行测试,以便尽可能地消除问题。重复直到解决。
  • 不要学习是否可以避免这种情况-锁定数据库帐户并证明在不涉及数据库的情况下问题仍然存在,而不是花费数小时来学习如何使用数据库。
  • 很容易发现自己在思考“我不知道下一步该怎么做”。请注意何时发生,然后返回找到问题所在的测试。

互联网无法正常工作?检查问题,发现这是他们无法访问的网站。快速测试涉及他们的Internet连接(工作),是否为我加载(否)。快速测试指出它是该站点。看到问题对我来说真的发生了,我就使这种可能性迅速远离了他们的PC,浏览器,DNS,用户帐户办公室防火墙等。

那么该站点无法加载,现在呢?这还不能解决,因此请寻找将问题分解成更小的问题的地方。服务器在吗?它能ping吗?DNS有效吗?是。服务会在端口80上应答吗?否。服务正在运行吗?不,它开始了吗?否。它在事件日志/日志文件中是否给出错误?是! 他们说什么?

这是有效且快速的故障排除方法,因为它一直致力于缩小问题范围。如果我接受他们的报告,认为互联网无法正常工作,那么我会误以为它是连接失败。如果我第一次看到它不适合他们,我会在他们的计算机上浪费时间,以为它有问题。

切出尽可能多的“不可能的东西”。

了解系统。我对系统了解的越多,就越容易获得。在我了解不足的地方,问题更容易造成威胁,更加困难,运行缓慢,并且最终比解决方案更难解决,或者比小型,精确的手术修复大而笨拙的缓慢修复(重新安装)。


4

通常,我会问“可能导致此问题的哪些变化”?大多数问题是由对已知良好配置的更改引起的。如果您可以找出是谁做了更改,那么通常您会得到答案。


2

我认为这是一种技能,而不是科学。有时您走错了路,但大多数情况下:

  • 对所有相关技术(网络,硬件,操作系统,软件,开发等)有很好的基本了解,将帮助您消除一些“错误的路径”
  • 认为基本的东西-不要跳到最复杂的场景,因为它就在您的脑海中,执行基本的故障排除并引导您进行操作。

我曾经让老板打电话给我的“高级”工程师,他告诉我他有一台无法连接的服务器,他曾尝试切换电缆,但仍然没有任何乐趣。我能听到像电池中的UPS一样在后台发出蜂鸣声。我问他是否可以看到交换机上的活动,他说不。我问他哔哔声是否来自UPS,他说是的,我问他是否可以看到机架上的所有灯都亮了,他说不...看看你的鼻子-这很有帮助!


1

我首先检查明显的地方。是否有错误消息说明问题所在?一切连接正确吗?我不希望浪费数小时来解决可能在几分钟内解决的问题。我认为可能会过于有条理。尽管我确切地告诉他们问题出在哪里,但我仍然看到人们浪费了一整天来重现问题。那不是我付钱的。

如果答案不明显,请排队一些嫌疑犯,然后先进行测试。只有在测试了可能的嫌疑人之后,才应该测试不太可能的嫌疑人。然后,您可以按照自己的意愿进行科学操作。


嗯。我部分同意-或至少我认为很容易遵循别人的规则而没有真正了解他们何时/何时合适。就像高中生一样,他们被迫学习数学,但他们不会意识到他们可以利用自己在现实生活中所学到的情况。但是了解正确的时间来应用正确的规则确实可以带来好处。例如:谷歌“ HalfSplit方法”提供了一个非常有效的故障排除规则示例
用户名,2009年

您排除明显现象的方法并非不科学。您只是在快速进行假设和测试步骤的几次迭代。我非常同意您应该优先考虑可以快速测试的想法。
Zoredache
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.