Answers:
我只是为解决问题一段时间后为自己写下的要点清单:
还有大量的调试规则,以PDF格式列出,其中包含示例和每条规则的说明。我无法快速找到PDF,但是我认为这是列表的张贴者:
如果问题与互联网有关,则可能是DNS。
如果问题很难诊断,则可能是RAM。
如果问题出在Windows工作站上,则可能是重新映像最快的方法。
如果问题是在星期五,那可能很严重。
我喜欢回到科学方法。
来自(http://en.wikipedia.org/wiki/Scientific_method)
- 定义问题
- 收集信息和资源(观察)
- 形式假设
- 进行实验并收集数据
- 分析数据
- 解释数据并得出结论,将其作为新假设的起点
- 文件结果
通常,我总是喜欢尝试并仔细检查我的基本假设。它是否有电,是否已插入,接线是否良好。当电缆松动时,花几个小时尝试查看软件问题是非常烦人的。
我发现在假设创建阶段,尽可能多地提出问题的可能原因非常重要。然后,我根据测试的难易程度和想法的可能性来选择要首先测试的想法。
获得帮助也很重要。如果可以的话,请咨询您的同事,供应商或有关系统的最了解的人。如果有可用的人可以帮助您解决问题,请不要花费很多时间来解决问题。
奥赖利(O'Reilly)有一本不错的书《网络故障排除工具》,其中有很多步骤要遵循,这与科学方法非常相似。我发现这本书非常有用,强烈推荐。这本书更加详细,并提出了许多有用的工具。
- 陈述你的目标
- 定义系统
- 确定可能的结果
- 确定并选择要测量的内容
- 如果合适,确定测试参数和因素
- 选择工具
- 建立测量约束
- 审查实验设计
- 收集数据
- 分析数据
也可以看看:
(这些要点摘自“ 系统和网络管理实践 ”的“调试”一章)
有两件事要知道:
知道“固定”版本的样子。 最好是您可以运行的命令在工作正常时给出一定的输出。例如:我试图弄清楚为什么在正确设置密钥后(或因此认为)SSH要求输入密码。因此,我的测试是:“ ssh服务器名正常运行时间”,它应该工作而无需询问密码。
在正确的级别上描述问题。 用户抱怨无法对服务器执行ping操作,因此不应将您送去运行和修复服务器。这个人的工作不是整天围坐在一台机器上。他们希望完成某种任务,例如将计算机用作DNS服务器。示例:曾经有用户抱怨说他们无法遍及世界的一半对计算机进行ping操作。我花了一整天的时间跟踪公司那部分的系统管理员,以找出那台机器出了什么问题。它已退役,他们感到恐慌,因为他们认为可能是他们关闭了错误的机器。我与用户联系,并说:“除了需要ping通这台机器外,您想使用它做什么?”。原来,他想在上面执行某项工作,如果他一直遵循正确的程序,那么他的任务将自动重定向到替换机器上。我浪费了我整天和本地系统管理员的时间。“我无法ping”的另一个原因不是要测试的正确的事情:通常将防火墙配置为丢弃ping数据包,但允许其他数据包通过。测试您想要经历的。
两种策略:
添加剂: 继续添加组件,直到问题开始。您添加的最后一件事是问题。示例:Web浏览器无法与服务器通信。在服务器和用户之间是负载平衡器,防火墙,缓存和用户的本地Web代理。每次添加一个组件时,首先尝试直接将查询直接发送到服务器,然后通过LB发送到服务器,然后通过防火墙发送到LB到服务器,依此类推。
减法:继续移除组件,直到问题消除。您删除的最后一件事是问题:示例:一台包含数十张卡的计算机无法启动。继续取出卡,直到机器启动。
两点愚蠢的运气:
忘了我说的一切。 问题是由对系统的最后更改引起的。 (这在99%的时间内都有效...问题是您有99%的时间不知道最后一次更改实际上是什么)
当所有其他方法都失败时,请检查是否有愚蠢的事情。 http://whatexit.org/tal/mywritings/dumb-things-to-check.html 示例:疯狂的问题无法解释。然后,我们检查了配置文件:用户已经通过将其复制到Windows框,对其进行编辑,然后将其复制回来对其进行了编辑。现在,每行末尾都有一个^ M。我们从未注意到,因为我们的文本编辑器无声地隐藏了这一事实。可悲的是,读取配置文件的软件将这些^ Ms变成了一个不间断的空间,从而破坏了许多其他程序。
我记得整个过程中的一般做法:
在故障排除期间,这里定义了我的基本方法:
我尝试并坚持的态度:
这些态度对我有帮助-阻止我向空中举起手臂,宣布一些“怪异”,然后放弃,或者因为感觉“无法解决”而变得不高兴。
我考虑疑难解答的方式:
故障排除过程:
互联网无法正常工作?检查问题,发现这是他们无法访问的网站。快速测试涉及他们的Internet连接(工作),是否为我加载(否)。快速测试指出它是该站点。看到问题对我来说真的发生了,我就使这种可能性迅速远离了他们的PC,浏览器,DNS,用户帐户办公室防火墙等。
那么该站点无法加载,现在呢?这还不能解决,因此请寻找将问题分解成更小的问题的地方。服务器在吗?它能ping吗?DNS有效吗?是。服务会在端口80上应答吗?否。服务正在运行吗?不,它开始了吗?否。它在事件日志/日志文件中是否给出错误?是! 他们说什么?
这是有效且快速的故障排除方法,因为它一直致力于缩小问题范围。如果我接受他们的报告,认为互联网无法正常工作,那么我会误以为它是连接失败。如果我第一次看到它不适合他们,我会在他们的计算机上浪费时间,以为它有问题。
切出尽可能多的“不可能的东西”。
了解系统。我对系统了解的越多,就越容易获得。在我了解不足的地方,问题更容易造成威胁,更加困难,运行缓慢,并且最终比解决方案更难解决,或者比小型,精确的手术修复大而笨拙的缓慢修复(重新安装)。
通常,我会问“可能导致此问题的哪些变化”?大多数问题是由对已知良好配置的更改引起的。如果您可以找出是谁做了更改,那么通常您会得到答案。
我认为这是一种技能,而不是科学。有时您走错了路,但大多数情况下:
我曾经让老板打电话给我的“高级”工程师,他告诉我他有一台无法连接的服务器,他曾尝试切换电缆,但仍然没有任何乐趣。我能听到像电池中的UPS一样在后台发出蜂鸣声。我问他是否可以看到交换机上的活动,他说不。我问他哔哔声是否来自UPS,他说是的,我问他是否可以看到机架上的所有灯都亮了,他说不...看看你的鼻子-这很有帮助!
我首先检查明显的地方。是否有错误消息说明问题所在?一切连接正确吗?我不希望浪费数小时来解决可能在几分钟内解决的问题。我认为可能会过于有条理。尽管我确切地告诉他们问题出在哪里,但我仍然看到人们浪费了一整天来重现问题。那不是我付钱的。
如果答案不明显,请排队一些嫌疑犯,然后先进行测试。只有在测试了可能的嫌疑人之后,才应该测试不太可能的嫌疑人。然后,您可以按照自己的意愿进行科学操作。