首页 > 系统相关 >查看程序占用tomcat内存情况

查看程序占用tomcat内存情况

时间:2023-03-13 18:32:09浏览次数:58  
标签:00 tomcat 示例 19 0.0 占用 PID 线程 内存


最近,公司线上tomcat经常无缘无辜宕机,总结了一下定位问题的方法,仅供参考:
报错信息:

Maximum number of threads (200) created for connector with address null and port 9443
# There is insufficient memory for the Java Runtime Environment to continue.
# Cannot create GC thread. Out of system resources.

一、查看当前用户线程和文件句柄数是否超出限制

(1)显示当前用户进程限制:ulimit -a 

显示结果:

core file size          (blocks, -c) 0
data seg size (kbytes, -d) unlimited
scheduling priority (-e) 0
file size (blocks, -f) unlimited
pending signals (-i) 256612
max locked memory (kbytes, -l) 64
max memory size (kbytes, -m) unlimited
open files (-n) 102400
pipe size (512 bytes, -p) 8
POSIX message queues (bytes, -q) 819200
real-time priority (-r) 0
stack size (kbytes, -s) 10240
cpu time (seconds, -t) unlimited
max user processes (-u) 1024
virtual memory (kbytes, -v) unlimited
file locks (-x) unlimited

(2)修改所有 linux 用户的环境变量文件:


vi /etc/profile
ulimit -u 10000
ulimit -n 4096

保存后运行#source /etc/profile 使其生效


二、查看当前端口号进程信息和GC使用情况

(1)显示端口的PID:lsof -i:端口

示例:lsof -i:7074

COMMAND  PID   USER   FD   TYPE   DEVICE SIZE/OFF NODE NAME
java 3195 ligang 34u IPv4 37416693 0t0 TCP *:7074 (LISTEN)

(2)gc信息统计:jstat -gcutil PID


示例:jstat -gcutil 3195


S0     S1     E      O      P     YGC     YGCT    FGC    FGCT     GCT   
12.63 0.00 52.03 78.63 99.13 4148 24.274 200 40.246 64.520

(3)输出线程数:ps -mp PID -o THREAD,tid,time | wc -l


示例:ps -mp 3195 -o THREAD,tid,time | wc -l


43


三、查看进程内存使用情况及定位到对应程序

(1)内存使用情况:top -p PID

示例:top 3195

top - 15:29:27 up 25 days, 20:05,  2 users,  load average: 0.01, 0.05, 0.01
Tasks: 1 total, 0 running, 1 sleeping, 0 stopped, 0 zombie
Cpu(s): 0.0%us, 0.1%sy, 0.0%ni, 99.8%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st
Mem: 8058868k total, 6821684k used, 1237184k free, 181936k buffers
Swap: 2097144k total, 492300k used, 1604844k free, 1897320k cached

PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
3195 ligang 20 0 4862m 196m 10m S 0.0 2.5 7:57.48 java

(2)找到该进程后,如何定位具体线程或代码呢,首先显示线程列表,并按照CPU占用高的线程排序:


ps -mp PID -o THREAD,tid,time | sort -rn | head -10


示例:ps -mp PID -o THREAD,tid,time | sort -rn | head -10


USER     %CPU PRI SCNT WCHAN  USER SYSTEM   TID     TIME
ligang 0.6 - - - - - - 00:07:58
ligang 0.2 19 - futex_ - - 3270 00:02:49
ligang 0.0 19 - inet_c - - 3277 00:00:00
ligang 0.0 19 - inet_c - - 3273 00:00:00
ligang 0.0 19 - inet_c - - 3271 00:00:00
ligang 0.0 19 - inet_c - - 3203 00:00:05
ligang 0.0 19 - futex_ - - 7644 00:00:00
ligang 0.0 19 - futex_ - - 3420 00:00:00
ligang 0.0 19 - futex_ - - 3288 00:00:06

(3)将需要的线程ID转换为16进制格式:printf "%x\n" TID


示例:printf "%x\n" 3270


cc6


(4)最后打印线程的堆栈信息:jstack PID |grep cc6 -A 30


示例:


jstack 2633 |grep e18 -A 30


结果就可以看到哪段代码导致的问题...


标签:00,tomcat,示例,19,0.0,占用,PID,线程,内存
From: https://blog.51cto.com/u_15998238/6118373

相关文章

  • 内存条选购
    如何看版本号看到4D之类的表示DDR4;数字4代表的就是4GB的内存。L便是低压,X表示旗舰级610B其中数字6代表的是颗粒位宽8代表的是8bit6代表的是16bit,这个数字与cpug......
  • gnome-shell 内存占用过高问题排查处理
    查看内存占用TOP10psaux|head-1;psaux|grep-vPID|sort-rn-k+4|head-10查看gnome-shell内存使用情况psauxwww|grepgnome-shell临时解决gnome-shel......
  • 如何定位和分析 Node.js 项目中的内存泄漏问题 All In One
    如何定位和分析Node.js项目中的内存泄漏问题AllInOne内存泄漏(......
  • 16.MySQL数据库之mysql-5.7 show engine innodb status 详解,常用的地方一、死锁分析 
     一、show engine innodb status 简介:show engine innodb status 是mysql提供的一个用于查看innodb引擎时间信息的工具,就目前来说有两处比较常用的地......
  • 生产环境Java应用服务内存泄漏分析与解决
    有个生产环境CRM业务应用服务,情况有些奇怪,监控数据显示内存异常。内存使用率99.%多。通过生产监控看板发现,CRM内存超配或内存泄漏的现象,下面分析一下这个问题过程记录。1......
  • java202302java学习笔记第十一天-方法的基本内存原理2
     ......
  • linux安装tomcat
    linux安装tomcat一、下载安装包链接:https://pan.baidu.com/s/1TibyDHGbwc3YIEX0ZDJ8jg提取码:183q需要用到其他版本的tomcat,请自行下载:下载地址:http://tom......
  • e820获取内存分布
    什么是e820?e820是BIOS用来报告物理内存分布的一个基础设施。因此,e820是一个很重要的东西,它报告了那些物理内存范围是可用的,那些范围是预留的。e820流程分析linux......
  • 2_Tomcat结构介绍
    Tomcat目录结构与介绍 binbin目录主要是用来存放tomcat的命令文件,主要有两大类,一类是以.sh结尾的(linux命令),另一类是以.bat结尾的(windows命令)。conf   conf目......
  • 2_Tomcat结构介绍
    Tomcat目录结构与介绍 binbin目录主要是用来存放tomcat的命令文件,主要有两大类,一类是以.sh结尾的(linux命令),另一类是以.bat结尾的(windows命令)。conf   conf目......