到底多高的负载才算高负载?

本文解释了Linux系统中负载平均值的概念,包括其含义、正常范围及如何与CPU数量关联。此外,还介绍了如何查看系统CPU数量,并指出CPU高负载与高系统负载的区别。

接触过和使用过unix或linux的朋友,都知道如何查看Unix/Linux load的值,这边我也重复一下查看load的方法:

[root@aaronw ~]# uptime13:33:37 up 7 days, 1:52, 1 user, load average: 4.15, 2.00, 3.14

load average 后面三个值代表系统在1分钟、5分钟和15分钟的负载情况,都知道数字越高表示系统负载越大,第一直觉就是这个系统不行了。那么到底多高的负载才算高负载? 我们又如何去判断系统是否已经高负载呢?

1. 什么是load average
load average的就是一定时间内计算机有多少个active_tasks,也就是说是计算机的任务执行队列的长度,cpu计算的队列。
2. load average多少是正常?

既然load是cpu计算的队列,那就应该和cpu个处理方式和cpu的个数有关系。所以我个人认为应该按系统识别的cpu个数来确定load的临界值,系统识别为8个cpu,那么load为8就是临界点,高于8就属于over load了。

3. 什么叫系统识别CPU个数?

这里涉及到cpu物理个数和超线程技术的问题。对于单处理器在满负载的情况下1.00,则双处理器的负载满额的情况是 2.00,它还有一倍的资源可以利用。
从性能的角度上理解,一台主机拥有多核心的处理器与另台拥有同样数目的处理性能基本上可以认为是相差无几。当然实际 情况会复杂得多,不同数量的缓存、处理器的频率等因素都可能造成性能的差异。但即便这些因素造成的实际性能稍有不同,其实系统还是以处理器的核心数量计算负载均值 。这使我们有了两个新的法则:
  “有多少核心即为有多少负荷”法则: 在多核处理中,你的系统均值不应该高于处理器核心的总数量。
  “核心的核心”法则: 核心分布在分别几个单个物理处理中并不重要,其实两颗四核的处理器 等于 四个双核处理器 等于 八个单处理器。所以,它应该有八个处理器内核。

4. 如何查看系统的CPU个数

在 Linux 下,可以使用下面的命令获取你系统上的逻辑处理器的数量:
grep ‘model name’ /proc/cpuinfo | wc -l

5.CPU高不等同于load高
在Unix/Linux可能经常会遇到cpu的使用率为100%,但是load却不高!这是为什么呢?因为几乎所有的任务和会和CPU进行交互,但是由于各个设备的使用频率不同,造成了不能同步进行的问题。比如说,当对硬盘进行读写的时候,出现IO的等待时候,事实上cpu已经被切换到别的进程上了。该任务就处于等待状态,当这样的任务过多,导致队列长度过大,这样就体现到负载过大了,但实际是此时cpu被分配去干执行别的任务或空闲,因此CPU高不等同于load高,load高也不能于cpu高。
### 数据冗余与副本机制 Elasticsearch 通过分片(Shard)和副本(Replica)机制实现数据冗余。每个索引可以被划分为个主分片(Primary Shard),并配置个副本分片(Replica Shard)来复制主分片的数据。副本分片不仅提了数据的可用性,还增强了读操作的负载均衡能力。当某个节点发生故障时,副本分片可以迅速接管请求,从而避免服务中断 [^5]。 ### 自动故障检测与恢复 Elasticsearch 集群中的节点会定期向主节点发送心跳信号,以表明其正常运行。如果主节点未在规定时间内收到某个节点的心跳信号,则会判定该节点失效,并启动故障恢复流程。集群会自动选举新的主节点,并将失效节点上的分片重新分配到其他健康节点上,确保数据的持续可用 [^5]。 ### 写入一致性控制 为了确保数据在写入过程中的一致性,Elasticsearch 提供了写入一致性级别配置。通过设置 `index.write.wait_for_active_shards` 参数,可以控制写操作需要等待少副本分片确认后才算成功。例如,设置为 `all` 时,写操作需等待所有副本分片确认后才返回成功,从而在一定程度上提升数据的可靠性 [^4]。 ### 跨数据中心部署与复制 对于需要更灾难恢复能力的场景,Elasticsearch 支持跨数据中心部署和复制。通过 Cross-Cluster Replication(CCR)功能,可以将一个集群中的索引数据复制到另一个远程集群中,确保在某个数据中心出现故障时,其他数据中心仍能提供服务。此外,冷热架构的引入也允许将频访问数据和低频访问数据分别存储在性能不同、成本不同的硬件上,以优化资源利用率 [^5]。 ### 集群监控与优化 Elasticsearch 提供了丰富的监控接口和指标,帮助管理员实时掌握集群状态。通过合理配置节点数量、内存、CPU资源以及避免单点故障(如配置个主节点),可以进一步提升集群的可用性。同时,监控系统可以及时发现并处理潜在问题,确保集群稳定运行 [^5]。 ### 示例代码:配置副本数量 以下是一个配置副本数量的示例: ```json PUT /my_index { "settings": { "number_of_shards": 3, "number_of_replicas": 2 } } ``` ### 示例代码:查看集群健康状态 可以通过以下命令查看集群的健康状态: ```json GET /_cluster/health ``` 返回结果示例: ```json { "cluster_name": "my-cluster", "status": "green", "timed_out": false, "number_of_nodes": 3, "number_of_data_nodes": 3, "active_primary_shards": 10, "active_shards": 20, "relocating_shards": 0, "initializing_shards": 0, "unassigned_shards": 0 } ``` 状态字段 `status` 可能的值包括 `green`(所有主分片和副本分片都正常)、`yellow`(所有主分片正常,但部分副本分片未分配)和 `red`(部分主分片未分配)。
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值