通过平均负载检查服务器负载
我叫伊藤,是一名基础设施工程师。
当谈到服务器运维时,负载突然增加是一个问题。
“我的服务很慢,但我不知道为什么!”
,我想向您介绍经常检查的“平均负载”!
关于平均负载
当负载较高、站点或游戏较重时,我会暂时使用top命令。
top命令实时显示操作系统的当前状态。
面对如此多的信息,您可能不知道从哪里开始寻找。
这次我们要讲的是平均负载,所以我们来检查一下平均负载。
平均负载 (LA) 表示该服务器的“进程队列”。
从左至右:“洛杉矶 1 分钟前”、“洛杉矶 5 分钟前”和“洛杉矶 15 分钟前”。
这表示这样一种情况:多个进程正在请求 CPU 处理它们,但由于服务器无法处理它们,因此
负载平均值越高,该服务器上的负载就越高。
服务器一次可以处理的进程数由服务器上的CPU核心数决定。
处理可以通过多任务来完成,因此,例如,如果您有一台 4 核的服务器,则可以一次处理 4 个进程。
更多细节
您对平均负载有粗略的了解吗?
现在我们来谈谈Linux进程。
进程也有各种状态。
任务运行 | 该进程是可执行的,正在运行或等待执行。 |
---|---|
任务_可中断 | 中断是可能的,但您不知道它们何时返回,因为它们正在等待用户输入等。 |
任务_不可中断 | 服务器负载高,无法中断,服务器处于等待状态 |
任务已停止 | 中止状态 |
任务_僵尸 | 所谓的僵尸进程 |
参考:进程管理1 - 进程描述符 - Pridact 信息共享 wiki
参考:了解 Linux 的工作原理 - 进程管理和调度
其中,以下三个与负载无关。
- TASK_INTERRUPTIBLE:因为正在等待用户输入,所以不进入队列,因为不知道什么时候返回。
- TASK_STOPPED:进程已停止
- TASK_ZONBIE:成为僵尸
也就是说,剩下的两个排队,成为负载平均数,也就是“系统负载”。
“任务正在等待执行 (TASK_RUNNING)”或“任务负载过高而无法中断 (TASK_UNINTERRUPTIBLE)”。
- 任务运行
- 任务_不可中断
其他可以检查LA的命令
这是另外两个可用于检查平均负载的命令。
您可以使用 w 命令查看其他用户登录的情况。
[root@test ~]# w 12:49:13 up 4:38,2 个用户,平均负载:0.00, 0.00, 0.00 USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT vagrant pts/0 10.0.2.2 11:43 0.00s 0.00s 0.00s sshd:流浪者 [priv] 流浪者 pts/1 10.0.2.2 11:55 54:08 2.06s 0.00s sshd:流浪者 [priv]
uptime 命令可用于检查服务器将继续运行多长时间。
您还可以在此处检查平均负载。
[root@test ~]# 正常运行时间 12:49:34 起 4:38,2 个用户,平均负载:0.00, 0.00, 0.00
概括
所以,这次我解释了平均负载!
- 当负载较高时,查看平均负载
- 可以看到服务器无法处理的进程数
- 负载平均值越高,负载越高。
- 尽管我们用一个词来形容“过程”,但也有多种状态。
- 有多个命令可以查看负载平均值。
如果我们能够创建一个不关心这些事情的系统那就最好了,但是
在操作服务器时了解这些值仍然很重要,所以
请确保您正确理解它们!