vsphere 故障排除_为什么故障排除如此困难?
vsphere 故障排除
根据定义 ,故障排除被认为是对问题来源进行逻辑,系统的搜索以解决问题的方法。 现在,如果您还记得上次必须对生产系统中发生的特定问题进行故障排除的话,您会称之为逻辑和系统的吗? 或者,您是否同意诸如忙碌和猜测驱动之类的词更有可能描述您所经历的过程?
如果您倾向于对后一个问题回答“是”,那么您最终会浪费大量时间来寻找答案。 更糟糕的是,由于该过程是完全不可预测的,因此会在团队内部造成压力,并且可能会开始指责:
在这篇文章中,我将分析导致这种情况的不同方面。 文章的第一部分重点介绍发生故障诊断的环境中内置的基本问题。 文章的第二部分将描述该领域中的工具和与人相关的问题。 在结束部分,我将显示隧道尽头仍然有一些光线。
生产中的故障排除
对生产中的特定问题进行故障排除时,往往会发生一系列特定的问题。 现在,许多不同方面都可能使该过程陷入困境:
首先,您面临着“ 让我们重新启动实例以恢复正常 ”的压力。 用最快的方法摆脱对最终用户的影响的愿望是很自然的。 不幸的是,重启也可能破坏有关实际根本原因的任何证据。 如果重新启动实例,您将无法再获取实际发生的证据。 即使重新启动解决了手头的问题,根本原因本身仍然存在,只是在等待再次发生。
接下来是与安全性相关的不同方面,这些方面往往会将工程与生产环境隔离开来 。 如果您自己无权访问环境,则将被迫进行远程故障排除,并涉及所有与之相关的问题:现在要执行的每项操作都需要多人参与,这不仅增加了执行每个操作所需的时间,而且一路上可能会丢失信息。
当您将“让我们希望这可行”补丁发布到生产环境时,情况越来越糟。 测试和应用补丁通常需要数小时甚至数天 ,从而进一步增加了实际解决当前问题所需的时间。 如果需要多个“让我们希望”补丁,则解决方案将延迟数周。
最后但并非最不重要的一点是要自己使用的工具。 您想要部署的某些工具可能会使最终用户的情况更加糟糕 。 就像例子:
- 从JVM进行堆转储将使JVM停止数十秒钟。
- 日志记录中详细程度的增加可能会引入其他并发问题。
- 附加的探查器的庞大开销可能使已经很慢的应用程序彻底瘫痪。
因此,很可能您最终会花费数天甚至数周的时间来传递另一个遥测收集脚本或另一个“希望它能起作用”的生产补丁:
考虑到在生产中进行故障排除时面临的问题,很自然地,在许多情况下,故障排除活动都是在不同的环境中进行的。
测试/开发中的故障排除
在其他环境中进行故障排除时,您可以避免在生产中困扰您的威胁。 但是,您现在面临的是一个完全不同的问题,最终可能会变得更糟:即重现生产中发生的性能问题的挑战。 有许多不同的方面使复制过程陷入困境:
- 测试环境未使用与生产相同的数据源。 这意味着由数据量触发的问题可能不会在测试环境中重现。
- 揭示某些问题的使用模式不容易重新创建。 试想一下仅在2月29日发生的问题,该问题要求Windows ME上的两个用户同时访问特定功能,从而触发特定的并发问题。
- 应用程序本身是不一样的。 生产部署可能具有明显不同的配置。 差异可能包括不同的操作系统,群集功能,启动参数甚至不同的内部版本。
这些困难导致臭名昭著的“在我的机器上工作”的报价被引入讨论中:
可以看出,与手边的环境无关,当您必须对某事进行故障排除时,手边的环境的性质会阻碍您的前进。
除了特定于环境的约束之外,还有其他方面也导致故障排除过程的不可预测性。 这将在下一节中介绍。
工具和经验丰富的人来救援?
如果使用的工具和故障排除准则已经成熟,那么环境约束将不是真正的卖座。 实际上,它远非如此-负责解决问题的工程师通常没有预定义的过程来解决问题。 老实说,您是否按照以下在shell中执行的操作顺序认识自己:
my-precious:~ me$ sar
sar: failed to open input file [-1][/var/log/sa/sa06]
/usr/bin/sar [-Adgpu] [-n { DEV | EDEV | PPP }] [-e time] [-f filename] [-i sec] [-s time]my-precious:~ me$ man sarmy-precious:~ me$ sar 1
15:29:02 %usr %nice %sys %idle
15:29:03 1 0 2 97
Average: 1 0 2 97 my-precious:~ me$ sar 1 1000
15:29:06 %usr %nice %sys %idle
15:29:07 2 0 2 97
15:29:08 1 0 2 97
^CAverage: 1 0 1 97my-precious:~ me$ man sar
my-precious:~ me$ sar -G 1 3
sar: illegal option -- G
/usr/bin/sar [-Adgpu] [-n { DEV | EDEV | PPP }] [-e time] [-f filename] [-i sec] [-s time]my-precious:~ me$ asdöäaskdasäl;
-bash: asdöäaskdasäl: command not foundmy-precious:~ me$
如果您发现上述内容太熟悉了,不要害怕,您并不孤单。 远非如此,大多数工程师缺乏在该领域的深入经验,因此无法根据公认的熟悉模式来取得进步。 这并不令人感到羞耻–除非您是Brendan Gregg或Peter Lawrey ,否则您就没有10,000小时的故障排除能力,无法让您成为该领域的专家。
缺乏经验往往会导致针对当前问题使用不同的证据收集工具,包括但不限于:
- 收集不同的指标(CPU,内存,IO,网络等)。
- 分析应用程序日志
- 分析GC日志
- 捕获和分析线程转储
- 捕获和分析堆转储
您可以使用的此类工具数量几乎是无限的。 如果您不满意,请在此处和此处查看列表。 随机试用不同工具的方法导致选择和试用工具所花费的时间比实际解决当前问题要花费更多的时间。
解决疑难解答的噩梦
除了累积将近10,000小时的分钟数(这将使您成为该领域的专家)之外,还有更快速的解决方案来减轻故障排除所带来的痛苦。
分析开发
为了清楚起见,该文章不是关于将剖析作为一种技巧。 对代码进行概要分析没有错,尤其是在将代码交付生产之前。 相反,了解应用程序各个部分的热点和内存消耗将首先防止某些问题在生产中影响最终用户。
但是,数据,使用模式和环境的差异最终只会暴露您最终将在生产中面临的部分问题。 可以很好地用作先发制人的措施的技术只能在追溯解决问题时极有帮助。
质量检查中的测试
投资质量保证,尤其是如果投资导致流程自动化是您可以构建的下一个防御之道。 如果进行周到和彻底的应用,测试将进一步减少生产中的事件数量。
但是,通常很难证明对质量检查的投资是合理的。 一切标有“性能测试”或“验收测试”的产品最终都将与清晰,可衡量的业务目标驱动的新功能竞争。 现在,当开发人员推动“执行某项性能”任务的唯一条件是某些缩写词时,此类任务将永远不会使其积压下来:
优先 | 类型 | 描述 | 投资报酬率 |
---|---|---|---|
1个 | 特征 | 将发票与Salesforce集成 | BigCO将与我们签订250K合同 |
2 | 特征 | 支持Windows 10 | 订阅人数将增加10% |
… | … | … | …。 |
99 | 任务 | 负载测试客户搜索 | ??? |
为了证明这种投资的合理性,您需要将投资的回报与活动联系起来。 将生产中的P1性能事件减少3倍可与其美元价值相关联,在这种情况下,它有机会与销售团队推动的下一个功能相抵触。
生产监控
您需要接受的第一件事是在生产部署中会出现问题。 即使是NASA也会不时地炸毁他们的飞行器,因此您最好为生产中发生的问题做好准备。 无论您的配置如何好或测试的透彻程度如何,错误仍然会漏掉。
因此,您无法避免对生产问题进行故障排除。 为了更好地完成手头的任务,您应该对生产环境保持透明。 每当出现问题时,理想情况下,您已经拥有解决该问题所需的所有证据。 如果您拥有所需的所有信息,则可以有效地跳过有问题的复制和证据收集步骤。
不幸的是,监视世界的最新技术无法提供任何灵丹妙药来揭示您在不同情况下所需的所有信息。 为典型的基于Web的应用程序部署的工具集应至少包括以下内容:
- 日志监控。 应该汇总来自生产堆栈各个节点的日志,以便工程团队可以快速搜索信息,可视化日志并注册异常警报。 最常用的解决方案之一是ELK堆栈,其中的日志存储在Elasticsearch中 ,在Logstash中进行分析,并使用Kibana进行可视化。
- 系统监控。 在基础架构中聚合和可视化系统级指标既有益又易于设置。 密切关注CPU,内存,网络和磁盘使用情况,可以发现系统级问题并注册异常警报。
- 应用程序性能监视/用户体验监视。 密切关注单个用户的交互将揭示影响最终用户的性能和可用性问题。 至少,您会知道您的应用程序提供的特定服务何时发生故障。 充其量,使用Plumbr时,您还可以放大源代码中的实际根本原因。
带走
故障排除是必不可少的。 您无法避免,因此您知道相关问题是公平的。 您无法绕过不同环境所带来的约束,也无法在一夜之间成为专家。
确保在发布之前在开发中应用性能分析并测试代码,从而减少了生产中故障排除的频率。 对生产部署具有透明性,每当两个安全网出现故障时,您都可以更快地以可预测的方式做出响应。
翻译自: https://www.javacodegeeks.com/2016/09/why-is-troubleshooting-so-hard.html
vsphere 故障排除
vsphere 故障排除_为什么故障排除如此困难?相关推荐
- 齿轮箱常见故障数据_齿轮箱故障数据
[实例简介] 有关齿轮箱的故障特征 的数据 还有一些说明. 可以供振动信号分析使用. [实例截图] [核心代码] 齿轮箱故障数据keyong `-- 齿轮箱故障数据keyong |-- 断齿 | |- ...
- h5故障代码_美的空调故障代码h5 看完你就知道了
操作方法 01 空调没有"h5"故障代码,故障代码"hs"常被人误认为"h5",故障代码"hs"表示空调正在自动除霜,正 ...
- eds800变频器故障代码_变频器故障代码
展开全部 1.OC报警―键盘面板LCD显示:加.减.恒速时过电流. 对于短时间大电流的OC报警,一般情况下是驱e68a84e8a2ad62616964757a686964616f31333433646 ...
- 瓦力机器人故障维修_管道故障“瓦力”上 机器人管网检测显身手
"管道机器人"--CCTV管道内窥检测设备. 镇海新闻网讯(记者朱旭 刘萌鸣)纵横交错的下水管道承担了城市排水重任,管道堵塞.管壁破损--任一节段出了问题,都会给市民带来不小的麻 ...
- 串口控制led闪烁课程设计_排除led显示屏故障的方法及步骤
led显示屏是目前大屏领域炙手可热的产品,能应用在不同的领域和场所:但经了解调查,我们发现,led显示屏再使用过程中可能会面临系统发生故障,导致其无法正常工作,今天华邦瀛光电就带大家了解一些关于排除l ...
- ecu故障现象_发动机不能启动的原因和故障排除方法
发动机不能启动故障现象: 打开点火开关,将点火开关打到起动位置,发动机发动不能启动. 发动机不能启动故障产生的可能原因: 1)启动系统故障使发动机不能转动或转动太慢导致 (1)蓄电池存电不足.电极桩柱 ...
- 计算机故障代码0098,P0098故障码_P0098故障码是什么故障、排除方法、怎么消除_车主指南...
P0098故障码,适用于所有汽车制造商,意思是进气温度(IAT)传感器2电路高 (第1排)(Intake Air Temperature Sensor 2 Circuit High (Bank 1)) ...
- 联想微型计算机电脑黑屏怎么做系统,联想电脑黑屏怎么办,5种方法轻松排除黑屏故障...
对于许多用户来说,电脑黑屏是一种很常用的故障,而电脑黑屏一般是因为硬件损毁.系统不相容或显示卡驱动经常出现问题才造成的,那么,应当如何解决问题呢?下面我们就以联想起电脑为例来详尽讲解一下:联想起电脑黑 ...
- 使用Debug Diagnostic Tool排除内存泄漏故障
使用Debug Diagnostic Tool排除内存泄漏故障 翻译自:https://mssqlwiki.com/2012/12/06/debugging-memory-leaks-using-de ...
最新文章
- iovec结构体定义及使用
- SQL Server 2008如何进行数据库同步?
- php中strrpos函数的返回值类型是型_PHP常用函数总结
- php 数学基础,第四章 php数学运算
- 神经网络基础:七种网络单元,四种层连接方式
- python入门教程收藏_特别详细的Python入门教程,建议收藏
- Mac OSX 开机启动应用
- Google's BBR拥塞控制算法模型解析
- ubuntu21.04美化使用
- php商城教学视频教程,布尔教育ThinkPHP商城实战视频教程的课件源码分享
- 最常用20000英语单词表_家长最值得一看的文章如何培养孩子好的学习习惯!
- 5W1H分析法和5W2H分析法
- Jmeter 使用详解
- 仙境传说 RO手游 自动技能 定时加状态脚本
- win11运行gnuplot报错:This application failed to start because no Ot platform plugin could be initialized
- AR游戏能否摘掉“噱头”的帽子跻身主流产业?
- VC6.0实现网络编程弹出一个消息框
- matlab 雅各比符号,密码学与编码理论(第2版)(密码学方面的经典著作)
- 解决H5安卓自带浏览器video层级问题
- window.parent.open弹出多个界面,界面间互相传值