赞
踩
总的原则是:先止损解决问题,然后再分析原因进行复盘。
先用top或ps查看CPU使用情况,找到占用过大的进程,然后用perf top实时显示占用 CPU 时钟最多的函数或者指令,因此可以用来查找热点函数。
需要重点关注的几个指标:
模糊查找
ps aux:查看系统中所有的进程;
ps -ef | grep pid/进程名
ps查找,grep过滤
-e:显示系统内所有进程的信息
-f:使用完整格式显示进程信息
|是管道,使ps和grep能共同使用
准确查询:
top 命令可以动态地持续监听
进程地运行状态,而ps只输出当前进程运行状态
top 命令的基本格式:top [选项]
选项:
-d 秒数
:指定 top 命令每隔几秒更新。默认是 3 秒;
-b
: 使用批处理模式输出。一般和"-n"选项合用,用于把 top 命令重定向到指定的文件中;
-n 次数
:指定 top 命令执行的次数。
-p 进程PID
:仅查看指定 ID 的进程;
-s
: 使 top 命令在安全模式中运行,避免在交互模式中出现错误;
-u 用户名
: 只监听某个用户的进程;
比如:
top -b -n 1 > /root/top.log #让top命令只执行一次,然后把执行结果保存到top.log文件中,这样就能看到所有的进程了
输出信息详解
我们看看 top 命令的执行结果,如下:
第一部分: 显示的是整个系统的资源使用状况,我们就是通过这些输出来判断服务器的资源使用状态的;
第二部分:显示的是系统中进程的信息;
第一部分
第一行 :任务队列信息
第二行: 进程信息
第三行: CPU 信息
第四行:物理内存信息
第五行为交换分区(swap)信息
我们通过 top 命令的第一部分就可以判断服务器的健康状态
如果 1 分钟、5 分钟、15 分钟的平均负载高于 1,则证明系统压力较大。
如果 CPU 的使用率过高或空闲率过低,则证明系统压力较大。如果物理内存的空闲内存过小,则也证明系统压力较大。
这时,我们就应该判断是什么进程占用了系统资源。
第二部分
主要是系统进程信息,各个字段的含义如下:
PID:进程的 ID。
USER:该进程所属的用户。
PR:优先级,数值越小、优先级越高。
NI:优先级,数值越小、优先级越高。
VIRT:该进程使用的虚拟内存的大小,单位为 KB。
RES:该进程使用的物理内存的大小,单位为 KB。
SHR:共享内存大小,单位为 KB。
S:进程状态。
%CPU:该进程占用 CPU 的百分比。
%MEM:该进程占用内存的百分比。
TIME+:该进程共占用的 CPU 时间。
COMMAND:进程的命令名。
kill 并不是杀死进程的意思,kill 命令只是用来向进程发送一个信号,至于这个信号是什么,是用户指定的。
原理
kill 命令会向操作系统内核
发送一个信号和目标进程的 PID,然后系统内核根据收到的信号类型,对指定进程进行相应的操作。
kill命令常用信号及其含义
信号编号 | 信号名 | 含义 |
---|---|---|
0 | EXIT | 程序退出时收到该信息 |
1 | HUP | 该信号让进程立即关闭.然后重新读取配置文件之后重启 |
2 | INT | 表示结束进程,但并不是强制性的,同 "Ctrl+C" |
3 | QUIT | 退出 同 Ctrl + \ |
9 | SIGKILL | 用来立即结束程序的运行。本信号不能被阻塞、处理和忽略。一般用于强制中止进程 |
11 | SEGV | 段错误 |
14 | SIGALRM | 时钟定时信号,计算的是实际的时间或时钟时间。alarm 函数使用该信号 |
15 | SIGTERM | 正常结束进程的信号,kill 命令的默认信号 。如果进程已经发生了问题,那么这个信号是无法正常中止进程的,这时我们才会尝试 SIGKILL 信号,也就是信号 9 |
18 | SIGCONT | 该信号可以让暂停的进程恢复执行。本信号不能被阻断 |
19 | SIGSTOP | 该信号可以暂停前台进程,同 Ctrl+Z 。本信号不能被阻断 |
vmstat命令,是 Virtual Meomory Statistics(虚拟内存统计)的缩写,可用来监控 CPU 使用、进程状态、内存使用、虚拟内存使用、硬盘输入/输出状态
等信息。此命令的基本格式有如下 2 种:
[root@localhost ~]# vmstat [-a] [刷新延时 刷新次数]# -a 的含义是用 inact/active(活跃与否) 来取代 buff/cache 的内存输出信息。
[root@localhost ~]# vmstat [选项]
下表罗列出了 vmstat 命令的第二种基本格式中常用的选项及各自的含义。
[root@localhost proc]# vmstat 1 3
#使用vmstat检测,每隔1秒刷新一次,共刷新3次
procs ——memory—— swap —io system ——cpu——
r b swpd free buff cache si so bi bo in cs us sy id wa st
r b swpd free buff cache si so bi bo in cs us sy id wa st
0 0 0 407376 55772 84644 0 0 5 2 9 10 0 0 100 0 0
该命令输出信息中,各个字段以及含义如下表 :
如果服务器上的资源占用率比较高,我们就需要手工进行干预。如果是非正常进程占用了系统资源,则需要判断这些进程是如何产生的,不能一杀了之;如果是正常进程占用了系统资源,则说明服务器需要升级了。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。