服务器负载过高的原因是什么?如何确定负载过高的部分?

我叫伊藤,是一名基础设施工程师。

上次我们介绍了“负载平均值”,它可以用来衡量服务器负载增加的情况。
那么,如何使用负载平均值来衡量服务器负载呢?(Beyond Blog)

平均负载值表示等待处理的进程数。
该数值越高,表示等待处理的进程越多,表明“负载过重”。

这次,我想探讨一下高负荷情况的成因。

造成这种情况主要有两个原因:

高负载平均值的出现主要有两个原因。

  • CPU处理能力跟不上
  • 磁盘 I/O 处理跟不上

现在,我想解释一下如何找出这些原因。

如果CPU是原因所在

首先,使用 top 命令检查 CPU 使用率。以下两个值很重要:

%用户 用户进程的 CPU 使用率
%系统 系统(内核)CPU 使用率

如果一个典型的进程是 CPU 密集型的,那么在用户模式下,你很可能会看到较高的 CPU 使用率(%user)。

此外,当用户模式进程运行大量进程时,它会切换进程等等。
这种“进程切换”会使用内核模式(%system)CPU,因此
对于频繁切换进程的程序,内核模式CPU使用率会很高。

stress-user_022516_092215_PM
用户模式 ​​CPU 使用率高

压力系统_022516_092244_PM
内核 CPU 使用率高

如果原因是磁盘 I/O

如果问题是磁盘 I/O,请在 top 命令中检查以下内容:

%iowait 当需要磁盘 I/O 时,该进程处于空闲状态。
交换 内存使用量已达上限,硬盘驱动器正在被占用,而不是内存。

当从磁盘读取或写入大量数据时,iowait 值通常会很高。
例如,数据库访问量大的数据库服务器很可能具有较高的 iowait 值。

当某个进程耗尽所有内存时,硬盘上会分配一部分空间(SWAP)来代替内存使用。
例如,当网络服务器等设备访问量较大时,就会分配一部分内存并使用交换空间。

使用 SWAP 时,服务器速度会变慢,因为使用的是 HDD 而不是内存,这会增加磁盘 I/O 的负载。

stress-disk_022516_092255_PM
由于磁盘 I/O 导致高 I/O 等待和高负载

应力交换
如果您正在使用 SWAP

我们将调查原因。

这应该有助于您确定问题是出在 CPU 还是 I/O 上。
使用 ps 命令找出哪个进程正在使用 CPU(或者在交换空间的情况下是内存)。

如果用户模式下 CPU 使用率很高,则说明 I/O 等没有问题,因此您
可能需要提高 CPU 性能或检查您的程序。

如果磁盘 I/O 出现问题,您可能需要添加更多内存,或者修改程序,使其在有可用内存的位置执行处理,而不是使用磁盘 I/O。

此外,如果平均负载较低但处理速度较慢,
则可能是软件设置或网络处理存在问题。

当你遇到“高负荷”问题时,解决它的第一步是保持冷静,并确定哪个部分承受了负荷。

如果您想与云计算专业人士交谈

自成立以来,Beyond 一直利用我们作为多云集成商和托管服务提供商 (MSP) 所培养的技术能力,设计、构建和迁移使用各种云服务器平台(包括 AWS、GCP、Azure 和 Oracle Cloud)的系统。

我们提供根据客户所需系统和应用程序的规格和功能定制的云服务器环境,如果您对云感兴趣,请随时与我们联系。

● 云/服务器设计与构建
● 云/服务器迁移
● 云/服务器运行、维护与监控(全年365天,每天24小时)

如果您觉得这篇文章有用,请点击【点赞】!
4
加载中...
4票,平均分:1.00/14
16,824
X Facebook Hatena书签 口袋

这篇文章的作者

关于作者