大规模系统中的亚健康故障(4)外部根因

2023-11-09 12:10

本文主要是介绍大规模系统中的亚健康故障(4)外部根因,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

现在,我们描述硬件亚健康故障的外部根本原因,如温度变化、供电不足、环境条件和配置错误。这些外部原因使故障排除变得复杂,因为症状可能是不确定的,只能在同一在线场景中再现,但在离线(办公室)测试中无法观察到。

5.1 温度

为了使温度保持在正常工作状态,风扇或散热器必须正常工作。以下是未被监测工具检测到的温度变化的根本原因。

空气过滤器堵塞:在一份报告中,空气过滤器堵塞导致交换机中的光学元件由于高温而开始出现故障,从而产生高达10%的丢包率。清洁空气滤清器后,交换机返回正常速度,但只是暂时恢复。很可能是高温损坏了交换机的内部部件。

冷环境:冷温度也会导致亚健康故障[19]。在一次部署中,一些磁盘进入先读后写模式。经检查,机房有“地板下冷空气”系统,这在过去更为常见。机架底部的磁盘具有较高的低性能发生率。这表明温度变化也可能源于部署环境。

风扇损坏:风扇等冷却系统有时作为一个整体工作,而不是单独工作。有一种情况是,计算节点中的风扇停止工作,为了补偿此故障风扇,其他计算节点中的风扇开始以最大速度运行,这会产生严重的噪音和振动,从而降低磁盘性能。同样,这是级联异常的根本原因的一个例子(§3.4)。

风扇固件问题:风扇可以完全正常工作,但其速度由风扇固件控制。在一种情况下,当CPU密集型作业正在运行时,风扇固件的反应不够快,因此CPU在风扇有机会冷却CPU之前进入热节流(降低速度)。

不正确的设计/组装/操作:其中一个故事是,定制主板的设计“糟糕”,导致NIC焊接在CPU和内存后面的主板上。来自CPU的热量影响NIC,导致许多数据包错误和重试。在另一个相关的故事中,由于组装不良,CPU散热器无法与CPU进行物理接触,导致许多节点过热。在另一种情况下,新磁盘被插入带有“非常旧”风扇的机器。风扇没有为较新的磁盘提供足够的冷却,导致磁盘运行缓慢。

5.2 电源

电源供电不足很容易触发硬件的亚健康转台。以下是供电不足的一些根本原因。

​电容器不足:在一种定制主板设计中,主板电源控制逻辑上的电容器在特定负载下无法为CPU提供足够的电压。这使处理器不符合规格要求,导致损坏和重新计算。由于无法可靠地再现问题,诊断时间为数月。为了解决这个问题,在现场的数千个节点中的每个主板上添加了一个小电容器。在类似的案例中,也是电容器不足导致电压下降,但只有当多个核心同时从平静状态提升为性能状态时(一种极端情况)出现。因此,对更新的BIOS和软件进行的独立测试没有再现该问题。

PCU固件错误:在一种情况下,电源控制单元(PCU)的固件进入“奇怪”状态,无法提供足够的电源,整个机架无法关闭电源控制。这是一个暂时性故障,有时可以通过重置控制器、有时重新刷新固件以及在极少数情况下更换PCU来修复。

部分电源故障:在一次部署中,每四台机器共享一个电源。但是,当一个电源发生故障时,没有足够的电源以正常容量运行所有四台机器,因此每台机器上的CPU都会受到50%的限制。当这些机器被用于索引服务时,问题层出不穷,无法跟上请求的数量。这个问题花了好几天时间才解决,因为操作员无法了解电源的健康状况。这个问题也很有趣,因为两个电源并不意味着其中一个是完全工作的备用电源,而一个降低的电源,足以让机器继续工作。

耗电邻居:某些节点运行缓慢,因为同一机架中的其他节点耗电较多,导致机架电源不稳定,机架各个部分的电源供电能力下降。诊断这个问题花了几个月的时间,因为它不是源于速度慢的机器,并且只有在邻近节点上运行耗电的应用程序时才会发生。

主板传感器故障:在对速度较慢的机器进行长时间调试后,操作员发现主板上有一个传感器故障,该传感器向操作系统报告了故障值,从而使操作系统将CPU配置为在节能模式下以较慢的速度运行。

5.3 环境

各种环境条件都可能导致硬件出现亚健康故障,如下所示。

高度引发的重大事件:我们收集的最有趣的报告之一是在7500英尺的高空部署的。在这个高度,一些CPU会变热并进入热节流(性能降低)。显然,故障不在CPU上,而是在供应商的冷却设计中,在如此高的海拔下没有提供足够的冷却。在另一份仍处于相同高度的报告中,一些内存系统出现了比平常更频繁的多位故障(ECC检查和维修增加),这些故障内存随后被运回供应商,并装配更多的内存保护。

松散互连:松散的网络电缆和挤压的光纤导致网络延迟高达数百毫秒,使存储集群表现异常。由于症状不确定,诊断该问题需要几天时间。电缆松动/挤压的原因可能是振动或人为因素。在其他一些情况下,SSD和PCIe插槽之间的PCIe连接松动会导致设备驱动程序层多次重试操作。在另一个故事中,当操作员匆忙修理机器时,NVDIMM没有正确插入。尽管速度要低得多,但这台机器仍能正常工作。

震荡:一些磁盘驱动器在机架中部署时的性能降至100 KB/s,但在办公室中测试时的性能最高为100 MB/s。显然,节点周围有故障的机箱风扇导致了如此强烈的振动,使驱动器进入恢复模式。解决方案是在八个硬盘驱动器螺钉中的每一个都添加减震器,并在所有节点中更换大约10%的系统风扇。

环境和操作条件不匹配:在一个机构中,系统按照公布的时钟频率、温度范围和电压范围正确配置。然而,由于未知的环境条件,它无法以最佳方式工作,解决方案是稍微降低时钟,在处理器温度和电压上放置一个软件监视器,如果电压/温度接近装箱值的边缘(即,死节点优于慢节点),则杀死节点。由于不能可靠地复现,诊断时间为数月。在另一种情况下,交换机环境不支持“巨型帧”,导致10 Gbps吞吐量网络的吞吐量很低。修复方法是将MTU大小重新配置为1500字节。

未知原因:在一份有趣的报告中,集群中的所有独立驱动器同时报告了数十亿个SAS错误,持续了五分钟。报告称,这是一名技术人员在另一台机器上进行维护时发生的。

5.4 配置

虽然硬件通常在默认配置下运行,但今天的硬件具有允许配置参数的“旋钮”。此类配置可由人工操作员或软件/固件层(例如BIOS)修改。在我们的发现中,硬件的亚健康故障可能是由以下错误配置引起的。

有缺陷的BIOS固件:在一家机构中,其中一个系统通常每分钟接收28亿个值,但值写入时间一度增加,需要一分钟以上的时间来处理前几分钟的所有值。运营商增加了更多节点(认为这样可以平衡请求峰值的负载)。与直觉相反,添加更多节点会增加写入时间。诊断持续了一个月。根本原因是BIOS对添加到数据库群集的新机器的CPU进行了错误的时钟关闭。这些机器“一瘸一拐”地前进,但被分配了相同数量的负载(就像一台时钟正确的机器)。类似地,如其他地方[16,§3.6]所述,有缺陷的初始化配置也会禁用处理器缓存。

人为错误:关于SSD连接,并非所有PCIe插槽都有相同数量的通道。人工操作员偶尔会在将PCIe卡映射到具有不同通道数的PCIe插槽时出错,这导致全连接带宽利用率不足。在另一种情况下,xtnird.ini中设置的参数不正确。这是一种通过InfiniBand管理高速网络(HSN)的网络配置,未正确设置,导致网络被节流。关于配置错误,有大量相关工作[5,42]。我们相信还有更多的配置错误会导致硬件故障,而未被记录在生产日志中。

这篇关于大规模系统中的亚健康故障(4)外部根因的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/376005

相关文章

spring-boot-starter-thymeleaf加载外部html文件方式

《spring-boot-starter-thymeleaf加载外部html文件方式》本文介绍了在SpringMVC中使用Thymeleaf模板引擎加载外部HTML文件的方法,以及在SpringBoo... 目录1.Thymeleaf介绍2.springboot使用thymeleaf2.1.引入spring

在不同系统间迁移Python程序的方法与教程

《在不同系统间迁移Python程序的方法与教程》本文介绍了几种将Windows上编写的Python程序迁移到Linux服务器上的方法,包括使用虚拟环境和依赖冻结、容器化技术(如Docker)、使用An... 目录使用虚拟环境和依赖冻结1. 创建虚拟环境2. 冻结依赖使用容器化技术(如 docker)1. 创

CentOS系统Maven安装教程分享

《CentOS系统Maven安装教程分享》本文介绍了如何在CentOS系统中安装Maven,并提供了一个简单的实际应用案例,安装Maven需要先安装Java和设置环境变量,Maven可以自动管理项目的... 目录准备工作下载并安装Maven常见问题及解决方法实际应用案例总结Maven是一个流行的项目管理工具

C#实现系统信息监控与获取功能

《C#实现系统信息监控与获取功能》在C#开发的众多应用场景中,获取系统信息以及监控用户操作有着广泛的用途,比如在系统性能优化工具中,需要实时读取CPU、GPU资源信息,本文将详细介绍如何使用C#来实现... 目录前言一、C# 监控键盘1. 原理与实现思路2. 代码实现二、读取 CPU、GPU 资源信息1.

Window Server创建2台服务器的故障转移群集的图文教程

《WindowServer创建2台服务器的故障转移群集的图文教程》本文主要介绍了在WindowsServer系统上创建一个包含两台成员服务器的故障转移群集,文中通过图文示例介绍的非常详细,对大家的... 目录一、 准备条件二、在ServerB安装故障转移群集三、在ServerC安装故障转移群集,操作与Ser

在C#中获取端口号与系统信息的高效实践

《在C#中获取端口号与系统信息的高效实践》在现代软件开发中,尤其是系统管理、运维、监控和性能优化等场景中,了解计算机硬件和网络的状态至关重要,C#作为一种广泛应用的编程语言,提供了丰富的API来帮助开... 目录引言1. 获取端口号信息1.1 获取活动的 TCP 和 UDP 连接说明:应用场景:2. 获取硬

windos server2022的配置故障转移服务的图文教程

《windosserver2022的配置故障转移服务的图文教程》本文主要介绍了windosserver2022的配置故障转移服务的图文教程,以确保服务和应用程序的连续性和可用性,文中通过图文介绍的非... 目录准备环境:步骤故障转移群集是 Windows Server 2022 中提供的一种功能,用于在多个

JAVA系统中Spring Boot应用程序的配置文件application.yml使用详解

《JAVA系统中SpringBoot应用程序的配置文件application.yml使用详解》:本文主要介绍JAVA系统中SpringBoot应用程序的配置文件application.yml的... 目录文件路径文件内容解释1. Server 配置2. Spring 配置3. Logging 配置4. Ma

2.1/5.1和7.1声道系统有什么区别? 音频声道的专业知识科普

《2.1/5.1和7.1声道系统有什么区别?音频声道的专业知识科普》当设置环绕声系统时,会遇到2.1、5.1、7.1、7.1.2、9.1等数字,当一遍又一遍地看到它们时,可能想知道它们是什... 想要把智能电视自带的音响升级成专业级的家庭影院系统吗?那么你将面临一个重要的选择——使用 2.1、5.1 还是

高效管理你的Linux系统: Debian操作系统常用命令指南

《高效管理你的Linux系统:Debian操作系统常用命令指南》在Debian操作系统中,了解和掌握常用命令对于提高工作效率和系统管理至关重要,本文将详细介绍Debian的常用命令,帮助读者更好地使... Debian是一个流行的linux发行版,它以其稳定性、强大的软件包管理和丰富的社区资源而闻名。在使用