是什么导致高级服务器负载?解释如何识别负载下的区域
我叫伊藤,是一名基础设施工程师。
上次,我们引入了一个“负载平均值”,您可以检查服务器负载何时增加。
在平均负载上检查服务器加载吗?超越博客
平均负载是等待处理的进程的表示。
数字越高,等待处理的进程就越多,情况就是“负载较高”。
为什么这次负载这么高?我想找出原因。
主要有两个原因
平均负载较高的主要原因有两个。
- CPU处理跟不上
- 磁盘 I/O 处理跟不上
现在,我想解释一下如何找出每一个原因。
如果是CPU原因
首先,使用top命令检查CPU使用率。下面两个值值得注意。
%用户 | 用户进程使用的CPU使用率 |
%系统 | 系统(内核)使用的CPU使用率 |
如果一般进程是 CPU 密集型的,则用户模式 (%user) CPU 使用率可能会很高。
另外,如果大量进程在用户态下运行,进程也会发生切换。
由于进行这种“进程切换”时使用的是内核态(%system)CPU,
对于经常切换进程的程序来说,内核态CPU使用率会很高。
如果用户态CPU使用率很高
如果内核CPU使用率很高
如果磁盘 I/O 是原因
如果磁盘 I/O 是原因,请检查顶部的以下内容。
%io等待 | 当需要磁盘 I/O 时进程处于空闲状态 |
交换 | 已用内存量以及使用 HDD 代替内存 |
在读取和编写大量磁盘数据时,爱奥特的价值通常很高。
例如,具有较大数据库访问的DB服务器往往具有较高的IOWAIT值。
交换是当过程使用所有内存时使用HDD而不是内存的容量。
使用交换的一个示例是在Web服务器等上有大量访问权限时使用交换来保留内存并使用交换。
使用交换时,使用HDD代替内存意味着磁盘I/O会增加负载,这将减慢服务器的速度。
如果由于磁盘 I/O 导致 iowait 较高且负载较高
如果您使用的是交换
我们将调查原因
我认为这将帮助您确定问题是由 CPU 还是 I/O 引起的。
此外,我们将使用 ps 命令来找出哪些进程正在使用 CPU(在 SWAP 的情况下,哪些进程正在使用内存)。
如果用户态CPU使用率较高,I/O等没有问题,
那么可能需要提高CPU性能或者审查程序。
如果磁盘I/O侧存在问题,则可能需要添加更多内存,或者使程序过程在具有自由内存的位置工作,而不是磁盘I/O。
此外,可能存在平均负载较低但处理速度较慢的情况。
在这种情况下,可能是软件设置或网络处理出现问题。
如果您首先面临“高负载”问题,那么解决此问题的第一步是冷静地确定正在施加负载的哪一部分。
如果您想咨询云专家
自成立以来,我们的公司Buder(Usher)已将技术发展为多云集成商和托管服务提供商(MSP),并已使用各种云服务器平台(包括AWS,GCP,Azure和Oracle Cloud)设计,构建和迁移它。
我们根据我们要寻找的系统和应用程序的规格和功能为客户提供定制的云服务器环境,因此,如果您对云感兴趣,请随时与我们联系。
● 云/服务器设计/建设
● 云/服务器迁移/迁移
● 云/服务器运维、监控(全年365天、每天24小时)