当您解决困难的网络/硬件/软件问题时,您是否有任何可以依靠的一般规则?
例如:“我通过用第二台计算机测试外围设备来隔离问题的根源”或“我移除尽可能多的硬件来启动设备,然后一个一个地添加组件,直到我可以重现问题” , 等等。
axk*_*axk 16
只是我在与问题斗争了一段时间后为自己写下的要点清单:
还有一个很好的调试规则列表,它是一个 PDF 格式,带有每个规则的示例和解释。我无法快速找到 PDF,但我认为这是列表的海报:
Ada*_*dam 15
如果问题与 Internet 相关,则可能是 DNS。
如果问题难以诊断,则可能是 RAM。
如果问题出在 Windows 工作站上,重新映像可能是最快的。
如果问题出在星期五,则可能是严重的问题。
Zor*_*che 10
我喜欢回到科学方法。
来自(http://en.wikipedia.org/wiki/Scientific_method)
- 定义问题
- 收集信息和资源(观察)
- 形式假设
- 进行实验并收集数据
- 分析数据
- 解释数据并得出结论,作为新假设的起点
- 文件结果
作为一般规则,我总是喜欢尝试仔细检查我的基本假设。是否有电,是否插好,接线是否良好。当电缆松动时,花费数小时试图查看软件问题是非常烦人的。
我发现在假设创建阶段,尽可能多地提出问题的可能原因非常重要。然后,我尝试根据测试的难易程度和想法的可能性来选择要首先测试的想法。
获得帮助也很重要。如果可以,请咨询您的同事、供应商或任何对相关系统最了解的人。如果有人可以帮助您解决问题,请不要在问题上花费大量时间。
O'Reilly 有一本好书Network Troubleshooting Tools,其中有一套很好的步骤可以遵循,与科学方法非常相似。我发现这本书非常有用,并强烈推荐它。这本书更详细地介绍了许多有用的工具。
- 陈述你的目标
- 定义系统
- 确定可能的结果
- 确定并选择您要测量的内容
- 如果合适,确定测试参数和因素
- 选择工具
- 建立测量约束
- 审查实验设计
- 收集数据
- 分析数据
也可以看看:
Tom*_*ime 10
(这些重点是从《系统与网络管理实务》的“调试”一章转述的)
需要知道的两件事:
知道“固定”版本是什么样的。 最好是您可以运行的命令,该命令在运行时提供特定输出。例如:当我正确设置了密钥(或者我认为是这样)时,我试图弄清楚为什么 SSH 要求输入密码。所以我的测试是:“ssh servername uptime”,它应该可以在不询问密码的情况下工作。
在正确的级别描述问题。 抱怨他们无法 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 变成了一个不间断的空间,从而搞砸了大量其他程序。
整个过程我记得的一般做法:
在故障排除期间,这里定义了我的基本方法:
我尝试保持的态度:
这些态度对我有帮助——它们阻止我将双臂举在空中,宣布某事“奇怪”然后放弃,或者因为感觉“无法解决”而变得不开心。
我认为故障排除的方法:
故障排除过程:
互联网不工作?检查问题,发现是他们无法访问的网站。快速测试涉及他们的互联网连接(工作),它是否为我加载(否)。快速测试表明它是该站点。通过看到问题发生在我身上,我迅速将概率从他们的 PC、浏览器、DNS、用户帐户办公室防火墙等处推开。
所以网站没有加载,现在怎么办?这还不能解决,所以找个地方把问题分解成更小的问题。服务器开了吗?能ping通吗?DNS 工作吗?是的。服务是否在端口 80 上应答?否。服务是否正在运行?不,它开始了吗?否。它会在事件日志/日志文件中给出错误吗?是的!他们说什么?
这是一种高效且快速的故障排除方法,因为它始终专注于缩小问题的范围。如果我接受了他们关于互联网无法正常工作的报告,我会误以为这是连接失败。如果我接受我第一次发现它不会为他们加载,我会在他们的计算机上浪费时间,认为这是有问题的。
尽可能大的“不可能的事情”。
了解系统。我对系统的一般知识越多,它就越容易。在我的理解薄弱的地方,问题更令人生畏、更困难、进展更慢,并且更有可能以变通方法而不是修复结束,或者比小型精确的外科修复更容易出现笨拙的缓慢修复(重新安装)。
归档时间: |
|
查看次数: |
16905 次 |
最近记录: |