vim 页首
本文摘自 Manning出版 的《 Linux in Action 》一书的第13章 。
您的Linux机器的性能是否不稳定或异常缓慢? 您是否怀疑不断增长的需求可能会超出您的可用资源? 以下是您应该问自己的一些问题:
- 您与耗尽CPU和内存资源的距离有多近?
- 是否有不必要的运行在关闭状态?
- 在您不知情的情况下,有什么正在流氓吗?
下图显示了top
数据的典型屏幕。 第一行提供当前时间,自从最近一次系统引导以来经过的时间,当前登录的用户数以及最后一分钟,五分钟和15分钟的平均负载。 uptime
运行uptime
也可以返回此信息。
由于我们正在尝试解决性能问题,因此,最让我们感兴趣的数据列是%CPU
(给定进程当前使用的CPU容量百分比)和%MEM
(内存容量的百分比)。 您尤其要注意列表顶部显示的过程。
在这种情况下,您可以看到MySQL守护进程正在使用服务器CPU的4.3%,并在下一列中使用其13%的内存。 如果在该行的左边,您将看到进程ID(PID)为1367
并且该进程由mysql
用户“拥有”。
也许您会得出结论,此过程占用的资源超出了合理的范围,因此必须牺牲(为了更大的利益,您知道)。 该top
显示屏为您提供了杀死它所需的一切。 由于MySQL是由systemd管理的服务(在使用systemd的发行版中),因此,您的首选应该是使用systemctl
缓慢降低进程速度,而不会给应用程序数据带来任何风险。
systemctl stop mysqld
如果要关闭的进程不是由systemd管理的,或者出了什么问题并且systemctl
无法停止它,则可以使用kill
或killall
来消除进程。 某些系统要求您将killall
安装为psmisc
一部分。 您通过PID kill
这种方式:
kill 1367
另一方面, killall
使用进程名称而不是其ID。
killall mysqld
要杀死还是杀死所有人,这就是问题所在 。 实际上,答案是显而易见的。 kill
将根据PID来关闭单个进程,而killall
将终止正在运行的特定程序的实例。 因此,如果有两个或三个单独MySQL实例(也许属于单独的用户),所有实例都将停止。 在启动killall
之前,请确保没有要继续运行的类似名称的进程,这些进程可能会成为“附带损害”。
当然,您还必须运行systemctl disable
来确保该过程在下次启动时不会重新启动。
systemctl disable mysqld
解密顶部
如果您需要它们,您会在前面看到的top
输出的第三行为我们提供许多其他CPU指标的时间值(以百分比表示)。 这是您在这里看到的首字母缩略词的简短摘要:
公制 | 含义 |
---|---|
us | 时间运行高优先级(未配置)进程 |
sy | 时间运行内核进程 |
ni | 运行低优先级(好的)进程的时间 |
id | 空转的时间 |
wa | 等待I / O事件完成的时间 |
hi | 花在管理硬件中断上的时间 |
si | 花在管理软件中断上的时间 |
st | 它的虚拟机管理程序(主机)从此VM中窃取的时间 |
top
显示可以通过键盘输入实时定制。 输入h
以了解更多信息。
麻烦(模拟CPU负载)
渴望看到top
的动作,但是,您是否不知道一切运行顺利?
为什么不模拟危机级别的CPU过载? 就像孩子一样, yes
将连续输出(数字)噪声,直到被告知停止。 再三考虑,这根本不像孩子。
此命令会将噪音重定向到一次性的/dev/null
文件,并且&
字符会将进程推送到后台,从而将命令行控制权交还给您。 要增加压力,请再次启动该命令几次。
$ yes > /dev/null &
那应该让他们忙。 当所有这些都在运行时,请观看top
以查看发生了什么。 您也可以尝试运行其他应用程序,以了解降低它们的速度。 完成后,运行killall
完成所有yes
会话。
$ killall yes
翻译自: https://opensource.com/article/18/3/tips-top-monitoring-cpu-load-linux
vim 页首