/proc/pid/status查看某进程的状态--遇到的一个开线程太多将虚拟内存耗尽问题

今天遇到一个开线程太多将虚拟内存耗尽的问题

我的应用程序的pid是2558,查看此时的状态:

[email protected]:/proc/2558# cat status

Name:   sonia

State:  S (sleeping)

Tgid:   2558

Pid:    2558

PPid:   2335

TracerPid:      0

Uid:    0       0       0       0

Gid:    0       0       0       0

FDSize: 256

Groups: 0

VmPeak:  2812816 kB

VmSize:  2799304 kB

VmLck:         0 kB

VmPin:         0 kB

VmHWM:    799404 kB

VmRSS:    790564 kB     物理内存使用,这里是4G物理内存,是没有问题的

VmData:  2721456 kB     可以看到此时已经消耗了2.7G虚拟内存,并且还在增长,一个进程总共有4G虚拟内才能空间,应用层3G,内核态1G,这3G快被耗尽

VmStk:       912 kB

VmExe:     19196 kB

VmLib:      7012 kB

VmPTE:      3336 kB

VmSwap:        0 kB

Threads:        371            可以看到这里开了371个线程,并且还在增长

SigQ:   0/29838

SigPnd: 0000000000000000

ShdPnd: 0000000000000000

SigBlk: 0000000000000000

SigIgn: 0000000000001000

SigCgt: 00000001800006a9

CapInh: 0000000000000000

CapPrm: 0000001fffffffff

CapEff: 0000001fffffffff

CapBnd: 0000001fffffffff

Seccomp:        0

Cpus_allowed:   f

Cpus_allowed_list:      0-3

Mems_allowed:   1

Mems_allowed_list:      0

voluntary_ctxt_switches:        2881

nonvoluntary_ctxt_switches:     23528

这里还有其他的参数,也比较有意思,比如:VmRss:进程的物理内存使用

挂掉时的status:

[email protected]:/proc/2452# cat status

Name:   sonia

State:  S (sleeping)

Tgid:   2452

Pid:    2452

PPid:   2334

TracerPid:      0

Uid:    0       0       0       0

Gid:    0       0       0       0

FDSize: 256

Groups: 0

VmPeak:  3092408 kB

VmSize:  3092400 kB

VmLck:         0 kB

VmPin:         0 kB

VmHWM:    783332 kB

VmRSS:    779388 kB

VmData:  3014552 kB

VmStk:       912 kB

VmExe:     19196 kB

VmLib:      7012 kB

VmPTE:      3904 kB

VmSwap:        0 kB

Threads:        519

SigQ:   0/29838

SigPnd: 0000000000000000

ShdPnd: 0000000000000000

SigBlk: 0000000000000000

SigIgn: 0000000000001000

SigCgt: 00000001800006a9

CapInh: 0000000000000000

CapPrm: 0000001fffffffff

CapEff: 0000001fffffffff

CapBnd: 0000001fffffffff

Seccomp:        0

Cpus_allowed:   f

Cpus_allowed_list:      0-3

Mems_allowed:   1

Mems_allowed_list:      0

voluntary_ctxt_switches:        2779

nonvoluntary_ctxt_switches:     29252

[email protected]:/proc/2452#

时间: 2024-11-05 18:46:18

/proc/pid/status查看某进程的状态--遇到的一个开线程太多将虚拟内存耗尽问题的相关文章

Linux中/proc/[pid]/status详细说明

[[email protected] ~]# cat /proc/self/status Name: cat State: R (running) SleepAVG: 88% Tgid: 5783 Pid: 5783 PPid: 5742 TracerPid: 0 Uid: 0 0 0 0 Gid: 0 0 0 0 FDSize: 256 Groups: 0 1 2 3 4 6 10 VmSize: 6588 kB VmLck: 0 kB VmRSS: 400 kB VmData: 144 kB

linux查看某个进程CPU消耗较高的具体线程或程序的方法

目前我们的监控,可以发现消耗较高CPU的进程(阀值为3个CPU),通过监控我们可以找到消耗较高CPU的进程号: 通过进程号pid,我们在linux上可以通过top –H –p <pid>命令,显示该进程中每个线程的CPU资源消耗情况. 然后通过threadump命令,可以打印出某个应用JVM中某时刻所有线程的调用情况,通过线程号我们就可以对应找到线程调用的程序了. 另: 使用jrcmd命令也可以进行threadump和进程执行线程情况的查看,但该命令为jrockit 5.0 新带的命令,在wl

Linux /proc/pid目录下相应文件的信息说明和含义

Proc是一个虚拟文件系统,在Linux系统中它被挂载于/proc目录之上.Proc有多个功能 ,这其中包括用户可以通过它访问内核信息或用于排错,这其中一个非常有 用的功能,也是Linux变得更加特别的功能就是以文本流的形式来访问进程信息.很Linux命令(比如 ps.toPpstree等)都需要使用这个文件系统的信息.注意,本文就是向用户介绍一些访问这些信息的方法 .需要说明的是,本文所述的内容并不 一定适用所有内核版本,有部分操作只适用于2.6内核.一.进程信息在/proc文件系统中,每一个

Linux内核调试技术——进程D状态死锁检测

Linux的进程存在多种状态,如TASK_RUNNING的运行态.EXIT_DEAD的停止态和TASK_INTERRUPTIBLE的接收信号的等待状态等等(可在include/linux/sched.h中查看).其中有一种状态等待为TASK_UNINTERRUPTIBLE,称为D状态,该种状态下进程不接收信号,只能通过wake_up唤醒.处于这种状态的情况有很多,例如mutex锁就可能会设置进程于该状态,有时候进程在等待某种IO资源就绪时(wait_event机制)会设置进程进入该状态.一般情况

Linux中 /proc/[pid] 目录各文件简析

Linux 内核提供了一种通过 proc 文件系统,在运行时访问内核内部数据结构.改变内核设置的机制.proc 文件系统是一个伪文件系统,它只存在内存当中,而不占用外存空间.它以文件系统的方式为访问系统内核数据的操作提供接口. 用户和应用程序可以通过 proc 得到系统的信息,并可以改变内核的某些参数.由于系统的信息,如进程,是动态改变的,所以用户或应用程序读取 proc 文件时,proc 文件系统是动态从系统内核读出所需信息并提交的. 下面列出的这些文件或子文件夹,并不是都是在你的系统中存在,

查看那些进程使用了swap

https://blog.csdn.net/xiangliangyu/article/details/8213127$ sudo pacman -S iotop https://blog.longwin.com.tw/2017/02/linux-find-use-swap-process-2017/單純使用到 swap 的 PID 列表可查 /proc/*/status 的 VmSwap 值$ grep VmSwap /proc/*/status 查看那些进程使用了swap:$ for file

/proc/{pid} 内容解析

/proc/PID/cmdline The command that originally started the process. /proc/PID/cwd A symlink to the current working directory of the process. /proc/PID/environ Contains the names and values of the environment variables that affect the process. /proc/PI

启动zookeeper时,jps显示有进程,但是status查看状态时就Error contacting service. It is probably not running

转自:http://www.cnblogs.com/xiaohua92/p/5460515.html#undefined 安装zookeeper时候,可以查看进程启动,但是状态显示报错:Error contacting service. It is probably not running 安装zookeeper-3.3.2的时候,启动正常没报错,但zkServer.sh status查看状态的时候却出现错误,如下: JMX enabled by defaultUsing config: /ha

mysql 查看存储引擎的状态 show engine innodb status 详解

首先,让我们来了解一下 SHOW INNODB STATUS 输出的基础,它打印了很多关于 InnoDB 内部性能相关的计数器.统计.事务处理信息等.在 MySQL 5 中,InnoDB 的性能统计结果也在 SHOW STATUS 结果中显示了.大部分和 SHOW INNODB STATUS 的其他信息相同,在旧版本中还没有这个功能. SHOW INNODB STATUS 中的很多统计值都是每秒更新一次的,如果你打算利用这些统计值的话,那么最好统计一段时间内的结果.InnoDB 首先输出以下信息