自定义查看rss,也就是实际占用内存量:
背景:有时发现一些进程运行着运行着其CPU的负载就变高了,怎么发现?怎么知道是进程还是线程高了,定位是一个问题,层层定位也是个问题,这对于Window不是个问题,对于Linux就是一个大问题。
定位一下进程PID:
ps auxw|head -1;ps auxw|sort -rn -k3|head -10
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root 22381 2.1 0.5 273728 5860 ? S 20:03 2:22 php WebSocketServer.php
看线程:
[root@a php]# ps H -eo user,pid,ppid,tid,time,%cpu,cmd --sort=%cpu
USER PID PPID TID TIME %CPU CMD
root 3851 1 3851 00:00:46 0.0 php task.php
root 3851 1 3853 00:00:00 0.0 php task.php
root 3852 3851 3852 00:00:00 0.0 php task.php
1.CPU占用最多的前10个进程:
ps auxw|head -1;ps auxw|sort -rn -k3|head -10
2.内存消耗最多的前10个进程
ps auxw|head -1;ps auxw|sort -rn -k4|head -10
3.虚拟内存使用最多的前10个进程
ps auxw|head -1;ps auxw|sort -rn -k5|head -10
来自:http://blog.chinaunix.net/uid-15007890-id-3413584.html
如果是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,注意大写)
来自:https://zhidao.baidu.com/question/371525749314218684.html
可以用下面的命令将 cpu 占用率高的线程找出来:
ps H -eo user,pid,ppid,tid,time,%cpu,cmd --sort=%cpu
这个命令首先指定参数'H',显示线程相关的信息,格式输出中包含:user,pid,ppid,tid,time,%cpu,cmd,然后再用%cpu字段进行排序。这样就可以找到占用处理器的线程了。
直接使用 ps Hh -eo pid,tid,pcpu | sort -nk3 |tail 获取对于的进程号和线程号,然后跳转到3.
查看哪个进程线程占用cpu过高; top / ps -aux, 获得进程号
确定哪个线程占用cpu过高,进入进程号的目录:/proc/pid/task,
执行:grep SleepAVG **/status | sort -k2,2 | head, 确定cpu占用较高的线程号。
使用kill -3 pid 会打印线程堆栈的情况
来自:http://www.cnblogs.com/lidabo/p/4738113.html
背景:有时发现一些进程运行着运行着其CPU的负载就变高了,怎么发现?怎么知道是进程还是线程高了,定位是一个问题,层层定位也是个问题,这对于Window不是个问题,对于Linux就是一个大问题。
定位一下进程PID:
ps auxw|head -1;ps auxw|sort -rn -k3|head -10
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root 22381 2.1 0.5 273728 5860 ? S 20:03 2:22 php WebSocketServer.php
看线程:
[root@a php]# ps H -eo user,pid,ppid,tid,time,%cpu,cmd --sort=%cpu
USER PID PPID TID TIME %CPU CMD
root 3851 1 3851 00:00:46 0.0 php task.php
root 3851 1 3853 00:00:00 0.0 php task.php
root 3852 3851 3852 00:00:00 0.0 php task.php
1.CPU占用最多的前10个进程:
ps auxw|head -1;ps auxw|sort -rn -k3|head -10
2.内存消耗最多的前10个进程
ps auxw|head -1;ps auxw|sort -rn -k4|head -10
3.虚拟内存使用最多的前10个进程
ps auxw|head -1;ps auxw|sort -rn -k5|head -10
来自:http://blog.chinaunix.net/uid-15007890-id-3413584.html
如果是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,注意大写)
来自:https://zhidao.baidu.com/question/371525749314218684.html
可以用下面的命令将 cpu 占用率高的线程找出来:
ps H -eo user,pid,ppid,tid,time,%cpu,cmd --sort=%cpu
这个命令首先指定参数'H',显示线程相关的信息,格式输出中包含:user,pid,ppid,tid,time,%cpu,cmd,然后再用%cpu字段进行排序。这样就可以找到占用处理器的线程了。
直接使用 ps Hh -eo pid,tid,pcpu | sort -nk3 |tail 获取对于的进程号和线程号,然后跳转到3.
查看哪个进程线程占用cpu过高; top / ps -aux, 获得进程号
确定哪个线程占用cpu过高,进入进程号的目录:/proc/pid/task,
执行:grep SleepAVG **/status | sort -k2,2 | head, 确定cpu占用较高的线程号。
使用kill -3 pid 会打印线程堆栈的情况
来自:http://www.cnblogs.com/lidabo/p/4738113.html
作者:jackxiang@向东博客 专注WEB应用 构架之美 --- 构架之美,在于尽态极妍 | 应用之美,在于药到病除
地址:http://jackxiang.com/post/9120/
版权所有。转载时必须以链接形式注明作者和原始出处及本声明!
最后编辑: jackxiang 编辑于2018-9-26 14:31
评论列表