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

我叫伊藤,是一名基础设施工程师。
在之前的文章中,我们介绍了“负载平均值”,这是一个用于检查服务器负载何时增加的指标。
使用负载平均值检查服务器负载 - Beyond Blog
平均负载值代表等待处理的进程数。
数值越高,表示等待处理的进程越多,表明“高负载”情况。
这次,我想探讨一下高负荷情况的成因。
造成这种情况主要有两个原因:
高负载平均值的出现主要有两个原因。
- CPU处理能力跟不上
- 磁盘 I/O 处理跟不上
现在,我想解释一下如何找出这些原因。
如果CPU是原因所在
首先,使用 top 命令检查 CPU 使用率。以下两个值很重要:
| %用户 | 用户进程的 CPU 使用率 |
| %系统 | 系统(内核)CPU 使用率 |
如果一个典型的进程是 CPU 密集型的,那么在用户模式下,你很可能会看到较高的 CPU 使用率(%user)。
此外,用户模式进程,尤其是运行大量进程的进程,会执行进程切换。
这种“进程切换”会占用内核模式(%system)的 CPU 资源,因此
频繁切换进程的程序往往内核模式 CPU 使用率很高。

用户模式 CPU 使用率高

内核 CPU 使用率高
如果原因是磁盘 I/O
如果问题是磁盘 I/O,请在 top 命令中检查以下内容:
| %iowait | 当需要磁盘 I/O 时,该进程处于空闲状态。 |
| 交换 | 内存使用量已达上限,硬盘驱动器正在被占用,而不是内存。 |
当磁盘读写数据量较大时,iowait 值通常会增加。
例如,频繁访问数据库的数据库服务器很可能具有较高的 iowait 值。
SWAP(交换空间)是指当进程耗尽所有内存时,用作备份内存的硬盘空间。
例如,Web 服务器在访问量较大时可能会分配内存并使用 SWAP。
使用 SWAP 时,服务器速度会变慢,因为使用的是 HDD 而不是内存,这会增加磁盘 I/O 的负载。

由于磁盘 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
