-
统计内存最高的进程: ps aux | grep -v PID | sort -rn -k 4 | head
-
linux下获取占用内存资源最多的10个进程,可以使用如下命令组合:ps aux|head -1;ps aux|grep -v PID|sort -rn -k +4|head
-
linux下获取占用CPU资源最多的10个进程,可以使用如下命令组合:ps aux|head -1;ps aux|grep -v PID|sort -rn -k +3|head
-
统计CPU使用率最高的进程: ps aux | grep -v PID | sort -rn -k 3 | head
-
僵尸进程: ps aux | grep defunct | grep -v grep
-
查找进程启动的线程: ps -eLf PID
-
可以使用一下命令查使用内存最多的10个进程
-
查看占用cpu最高的进程
ps aux|head -1;ps aux|grep -v PID|sort -rn -k +3|head
或者top (然后按下M,注意这里是大写)
-
查看占用内存最高的进程
ps aux|head -1;ps aux|grep -v PID|sort -rn -k +4|head
或者top (然后按下P,注意这里是大写)
-
该命令组合实际上是下面两句命令:
ps aux|head -1
ps aux|grep -v PID|sort -rn -k +3|head其中第一句主要是为了获取标题(USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND)。
接下来的grep -v PID是将ps aux命令得到的标题去掉,即grep不包含PID这三个字母组合的行,再将其中结果使用sort排序。
sort -rn -k +3该命令中的-rn的r表示是结果倒序排列,n为以数值大小排序,而-k +3则是针对第3列的内容进行排序,再使用head命令获取默认前10行数据。(其中的|表示管道操作)
补充:内容解释
PID:进程的ID
USER:进程所有者
PR:进程的优先级别,越小越优先被执行
NInice:值
VIRT:进程占用的虚拟内存
RES:进程占用的物理内存
SHR:进程使用的共享内存
S:进程的状态。S表示休眠,R表示正在运行,Z表示僵死状态,N表示该进程优先值为负数
%CPU:进程占用CPU的使用率
%MEM:进程使用的物理内存和总内存的百分比
TIME+:该进程启动后占用的总的CPU时间,即占用CPU使用时间的累加值。
COMMAND:进程启动命令名称
-
可以使用以下命令查使用内存最多的K个进程
-
方法1:
ps -aux | sort -k4nr | head -K
如果是10个进程,K=10,如果是最高的三个,K=3说明:ps -aux中(a指代all——所有的进程,u指代userid——执行该进程的用户id,x指代显示所有程序,不以终端机来区分)
ps -aux的输出格式如下:
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root 1 0.0 0.0 19352 1308 ? Ss Jul29 0:00 /sbin/init
root 2 0.0 0.0 0 0 ? S Jul29 0:00 [kthreadd]
root 3 0.0 0.0 0 0 ? S Jul29 0:11 [migration/0]
sort -k4nr中(k代表从第几个位置开始,后面的数字4即是其开始位置,结束位置如果没有,则默认到最后;n指代numberic sort,根据其数值排序;r指代reverse,这里是指反向比较结果,输出时默认从小到大,反向后从大到小。)。本例中,可以看到%MEM在第4个位置,根据%MEM的数值进行由大到小的排序。
head -K(K指代行数,即输出前几位的结果)
|为管道符号,将查询出的结果导到下面的命令中进行下一步的操作。
- 方法2:top (然后按下M,注意大写)
二、可以使用下面命令查使用CPU最多的K个进程
-
方法1:
ps -aux | sort -k3nr | head -K
-
方法2:top (然后按下P,注意大写
-
查看网络服务状态:
- netstat -ntlp --显示正在listening的tcp的数字格式的连接
- netstat -nulp --显示正在listening的udp的数字格式的连接
-
硬件故障分析:
1.检查磁盘使用量:服务器硬盘是否已满。
2.是否开启了swap交换模式(si/so)。
3.CPU使用情况:占用高CPU时间片的是系统进程还是用户进程。 -
查看CPU和内存信息: free -m
Mem为物理内存的容量。
Swap为虚拟内存的容量。
total为总容量。
used为已用容量。
free为空闲容量。
shared为共享容量。
buff/cache为缓冲及缓存的容量。
avaiable为真正可用容量。
一般swap used的值最好不要超过20%。 -
top --CPU和内存使用实际统计
-
mpstat 2 10 --查看每个CPU的使用统计。
-
总线设备信息统计:
-
lspci --显示系统中所有PCI总线设备或连接到该总线的所有设备
-
使用dmidcode命令查看bios、system、memory、processor等硬件设备的信息
例:dmidecode -t Memory | grep “Maximum Capacity”
-
查看网卡信息:
ethtool 网卡名
ethtool -i ens33
I/O性能统计
iostat -kx 2
vmstat 2 10
swpd:切换到交换内存上的内存容量(默认以KB为单位),正常情况下swpd的值为0。如果swpd的值比较大,如果查过100M,但是si和so的值长期为0,则这种情况不会影响性能。
free:空闲的物理内存容量。如果free的值很小,但是si和so的值也很小,则系统性能不会受到影响。
buff:做为buffer cache(缓冲区缓存)的内存,对块设备的读写进行缓冲。
cache:做为page cache(页面缓存)的内存,文件系统的缓存,如果缓存值大,则说明缓存的文件数多,如果频繁访问到的文件都能被缓存,name磁盘的读io bi(发送到块设备的块数)会非常小。
si:交换内存使用,由磁盘调入内存。
so:交换内存使用,有内存调入磁盘。
提示:内存够用时,si和so的值都是0,;如果这两个值长期大于0,那么系统性能就会收到影响,磁盘、I/O和CPU资源都会被消耗完。
bi:从块设备读入的数据量(读磁盘),单位为KB/s。
bo:写入到块设备的数据总量(写磁盘),单位为KB/s。
提示:随机磁盘读写的时候,这2个值越大(如超出1M),能看到CPU在I/O等待的值也会越大。
in:每秒产生的终端次数。
cs:每秒产生的上下文切换次数。
提示:in和cs的值越大,有内核消耗的CPU时间会越多。
us:用户进程消耗的CPU时间百分比。如果us的值比较高,则说明用户进程消耗的CPU时间多。但是如果长期超过50%,那么就考虑优化程序算法或者进行加速。
sy:内核进程所消耗的CPU时间百分比。如果sy的值比较高,说明系统内核消耗的CPU资源多,这并不是良性的表现,应该检查原因。
id:CPU处于空闲状态时间的百分比。
wa:I/O等待消耗的CPU时间百分比。如果wa的值比较高,则说明I/O等待比较严重,这可能是磁盘大量做随机访问造成的,也有可能是磁盘的带宽出现瓶颈,如快操作等。 -
查看当前占用I/O资源最高的进程信息,如下图所示:
dstat --top-bio --top-io
磁盘使用率统计:
df -h --查看磁盘容量使用情况(检查删除文件后磁盘空间有未释放)
fdisk -l --查看磁盘分区信息 -
磁盘I/O相关参考:https://www.cnblogs.com/hanson1/p/7102206.html
-
lsof命令可以列出当前系统打开的文件及目录,其中提供了大量关于这个应用程序本身和操作系统交互的信息。+D参数可以列出对应目录下的所有子目录和文件。
-
操作系统日志:
查看整体系统日志:/var/log/messages
查看授权和认证信息:/var/log/secure -
以上两个日志中需关注:
1)错误和告警信息,是否因为连接数过多所导致的;
2)是否有硬件错误或文件系统错误。 -
中断异常信息:
/proc/interrupts中中断请求是否均衡分配给了CPU处理,CPU是否会由于大量网络中断请求或RAID请求而过载。 -
内核信息查询:
dmesg | more