您的位置:首页 > 运维架构 > Linux

linux查看系统进程和线程

2017-06-10 22:54 393 查看

背景

在我们实际开发,在压测、系统出现问题(load高、CPU使用率高、RT高等)的时候我们需要去排查,得先看些系统基本信息,便于我们定位问题。

top命令

查看进程命令top 可以看到linux系统中内存,load,CPU使用率等等,还有所有的进程信息。

另外如果想让内容单位显示g,可以top -M。

参数:

-b 批处理

-c 显示完整的治命令

-I 忽略失效过程

-s 保密模式

-S 累积模式

-i<时间> 设置间隔时间

-u<用户名> 指定用户名

-p<进程号> 指定进程

-n<次数> 循环显示的次数

top - 23:14:38 up 33 days, 10:32, 1 user, load average: 0.05, 0.05, 0.05

Tasks: 31 total, 1 running, 29 sleeping, 0 stopped, 1 zombie

Cpu(s): 0.7%us, 0.7%sy, 0.0%ni, 97.8%id, 0.0%wa, 0.0%hi, 0.0%si, 0.8%st

Mem: 4096.000M total, 1621.660M used, 2474.340M free, 0.000k buffers

Swap: 2047.996M total, 0.000k used, 2047.996M free, 1529.891M cached

解释:

当前系统时间 : 23:14:38,系统运行时长: up 33 days, 10:32 单位 时:分。

1 user 一个登陆用户,load average 系统负载 1分钟,5分钟 ,15分钟的平均值。

总进程数 31个,1个正在运行,29个睡眠,0个停止,1个僵尸进程。

CPU占用率, us:用户空间CPU占用,sy:内核空间CPU占用,ni:用户空间中改变进程优先级的占比,id:CPU空闲率;

内存:total 总物理内存4G,1.6G被使用,2.4G空闲

交换区: 交换区总容量2G,使用0,2G空闲,1.5G 缓存交换区,;

PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND

2393 root 20 0 604m 18m 10m S 1.0 0.5 40:05.75 staragent-core

在javaweb开发中,我们经常的web容器tomcat,就是一个进程多线程来处理每个线程,有些我们想看进程中各个线程的使用情况,查看具体某个进程中的线程可以使用如下命令:

top -Hp 进程id



可以看到线程任务251个,251个sleeping,一开始会觉得奇怪为什么大部分都是sleeping的状态,这个其实在单核CPU的情况下,某一时刻只有CPU只能运行一个线程。多CPU多核的可以同时运行多个线程。我们看到系统使用的时候感觉像是并行在跑,是因为操作系统不停在做线程调度切换,由于调度的时间片很短,一般几十毫秒,用户感觉不出来。

* 查找java进程id快速方法 ps aux | grep java 。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  linux 系统排查