服务器java线程监控_Linux系统监控命令及定位Java线程

1.PID、TID的区分

uid是user id,即用户id,root用户的uid是0,0为最高权限,

gid是group id,用户组id,使用 id 命令可以很简单的通过用户名查看UID、GID:

~$ id bingyue

uid=1000(bingyue) gid=1000(bingyue) groups=1000(bingyue)

~$ id root

uid=0(root) gid=0(root) groups=0(root)

pid是process id,即进程id,可以通过pid找到这个进程的uid,

tid是thead id,可以理解为线程的id。

2.常用的系统监控命令

top查看活动进程信息

top 命令显示当前的活动进程,默认它是按占用CPU 的多少进行排序,每5秒钟刷新一次列表,

你也可以选择不同的排序方式,例如 m 是按内存占用方式进行排序的快捷键。

iostat命令查看磁盘读取情况

iostat 命令用来显示存储子系统的详细信息,通常用它来监控磁盘 I/O 的情况。

要特别注意 iostat 统计结果中的 %iowait 值,太大了表明你的系统存储子系统性能低下。

使用meminfo查看内存信息

meminfo 包含了内存的详细信息,可以使用 cat 和 grep 命令来显示 meminfo 信息:

cat /proc/meminfo

使用free命令动态查看内存信息

可以使用 free 命令来显示动态的内存使用信息,free 查看大概的内存信息,而 meminfo 提供的信息更加详细。

lsof命令查看打开文件和端口等的列表

lsof 命令对于很多 Linux/Unix 系统都可以使用,主要以列表的形式显示打开的文件和进程。

打开的文件主要包括磁盘文件、网络套接字、管道、设备和进程。

使用这个命令的主要原因是一个一个盘不能卸载并且显示文件正在使用或者打开的错误信息。这个命令很容易看出哪些文件正在使用。

使用mpstat查看cpu信息

mpstat mpstat是MultiProcessor Statistics的缩写,是实时系统监控工具。其报告与CPU的一些统计信息,这些信息存放在/proc/stat文件中。

默认可能没有安装,需要安装后使用。

在多CPUs系统里,其不但能查看所有CPU的平均状况信息,而且能够查看特定CPU的信息。

使用pmap查看某进程的内存使用情况

pmap 命令用来报告每个进程占用内存的详细情况,可用来看是否有进程超支了,该命令需要进程 id 作为参数。

pmap pid

使用ps 和 pstree查看进程列表

ps 和 pstree 命令都可以用来列表展示正在运行的所有进程。ps 告诉你每个进程占用的内存和 CPU 处理时间,而 pstree 显示的信息没那么详细,但它以树形结构显示进程之间的依赖关系,包括子进程信息。一旦发现某个进程有问题,你可以使用 kill 来杀掉它。

netstat网络信息

Netstat 和 ps 命令类似,显示了大量跟网络相关的信息,例如 socket 的使用、路由、接口、协议、网络等等。

strace

strace 可以记录进程进行系统调用的详情,因此它也是一个非常好的诊断工具,例如你可以使用它来找出某个程序正在打开某个配置文件。

Strace 在跟踪某个进程时会让该进程的性能变得非常差,因此请谨慎使用。

vmstat

你可以使用 vmstat 来监控虚拟内存,一般 Linux 上的开发者喜欢使用虚拟内存来获得最佳的存储性能。该命令报告关于内核线程、虚拟内存、磁盘、陷阱和 CPU 活动的统计信息。由 vmstat 命令生成的报告可以用于平衡系统负载活动。系统范围内的这些统计信息(所有的处理器中)都计算出以百分比表示的平均值,或者计算其总和。

uptime

uptime 命令告诉你这台服务器从开机启动到现在已经运行了多长时间了。同时也包含了从启动到现在服务器的平均负载情况

3.常用的监控工具

htop — 进程监控

htop 是一个更加先进的交互式的实时监控工具。htop 与 top 命令非常相似,但是他有一些非常丰富的功能,如用户友好界面管理进程、快捷键、横向和纵向进程等更多的。htop 是一个第三方工具并不包括在 Linux 系统中,你需要使用包管理工具进行安装。

iotop — 监控 Linux 磁盘 I/O

iotop 也是和 top 和 htop 命令相似,但是它会有一个报告功能去监控和显示实时的磁盘 I/O 输入和输出和程序进程。这个工具对于查找精确的高的磁盘读/写过程是非常有用的。

nmon即奈吉尔性能监视器

Nmon是 Nigel's Monitor 的缩写,是一个使用很普遍的开源工具,用来监视 Linux 系统的所有资源包括:CPU、内存、磁盘使用率、网络上的进程、NFS、内核等等,并且提供了一个图形化的工具。

tcpdump — 网络数据包分析器

Tcpdump 是一个简单、可靠的网络监控工具,用来做基本的协议分析,看看那些进程在使用网络以及如何使用网络。

如果需要获取详细的信息,可以使用 Wireshark 。

4.Linux监控常用的操作

netstat -natp : 查看对应的网络链接

lsof -p pid : 查找对应pid的文件句柄

lsof -i : 80 : 查找对应端口被哪个进程占用

lsof /tmp/1.txt :查找对应文件被哪个进程占用

查看所有存在的线程:

ps xH

手册中说:H Show threads as if they were processes

查看一个进程起的线程数:

ps -mp

手册中说:m Show threads after processes

5.找到最耗CPU的Java线程

首先使用top等命令找到jvm进程的pid,

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

3853 weblogic 18 0 9268m 4.1g 10m S 34.4 6.5 1301:04 java

当前jvm进程的pid是3853,通过jstack命令dump出当前的jvm进程的堆栈信息:

jstack 3853 >> /tmp/jstack0330.txt

然后使用下面的命令:

ps -mp pid -o THREAD,tid,time

或者

ps -Lfp pid

这个命令的作用,主要是可以获取到对应一个进程下的线程的一些信息:

$ ps -mp 3853 -o THREAD,tid,time

USER %CPU PRI SCNT WCHAN USER SYSTEM TID TIME

weblogic 29.3 - - - - - - 21:40:17

weblogic 10.7 24 - 184467 - - 13979 07:39:06

通过 printf "%x\n" 13979 可以将线程id转化成16进制表示,

继续通过grep命令即可以查到对应16进制的线程id信息:

grep 369b /tmp/jstack0330.txt

堆栈信息中的nid对应的linux操作系统下的tid,就是线程id对应的16进制数字,

tid则是jvm的jmm内存规范中的唯一地址定位。

使用grep -A ,可以显示匹配行和之后的几行,

继续查看线程所在堆栈信息中前后的部分:

grep 369b /tmp/jstack0330.txt -A 10

就可以定位到相关的代码位置。

Linux系统监控命令及如何定位到Java线程

>>PID.TID的区分 uid是user id,即用户id,root用户的uid是0,0为最高权限,gid是group id,用户组id,使用 id 命令可以很简单的通过用户名查看UID ...

总结:常用的Linux系统监控命令

记录一下自己常用的linux系统命令,方便以后查阅,发觉记忆越来越不行了 找到最耗CPU的java线程 ps命令 命令: ps -mp pid -o THREAD,tid,time 或者 ps -Lf ...

常用的linux系统监控命令整理

找到最耗CPU的java线程ps命令 命令:ps -mp pid -o THREAD,tid,time 或者 ps -Lfp pid 结果展示: 这个命令的作用,主要是可以获取到对应一个进程下的线程的 ...

常用的linux系统监控命令

记录一下自己常用的linux系统命令,方便以后查阅,发觉记忆越来越不行了 找到最耗CPU的java线程 ps命令 命令:ps -mp pid -o THREAD,tid,time   或者  ps - ...

Linux记录-linux系统监控命令汇总

命令 功能应用 用法举例     free 查看内存使用情况,包括物理内存和虚拟内存 free -h或free -m     vmstat 对系统的整体情况进行统计,包括内核进程.虚拟内存.磁盘.陷阱 ...

总结:常用的Linux系统监控命令(2)

判断I/O瓶颈 mpstat命令 命令:mpstat -P ALL 1 1000 结果显示: 注意一下这里面的%iowait列,CPU等待I/O操作所花费的时间.这个值持续很高通常可能是I/O瓶颈所导 ...

性能测试三十三:监控之Linux系统监控命令大全

1.top命令top命令是Linux下常用的性能分析工具,能够实时显示系统中各个进程的资源占用状况,类似于Windows的任务管理器.下面详细介绍它的使用方法.top - 01:06:48 up 1: ...

常用linux系统监控命令

一.内存监控 监控内存的使用状态是非常重要的,通过监控有助于了解内存的使用状态,比如内存占用是否正常,内存是否紧缺等等,监控内存最常使用的命令有free.vmstat.top等 1.1 free $ ...

Linux系统监控命令之iotop

iotop命令 iotop命令是一个用来监视磁盘I/O使用状况的top类工具.iotop具有与top相似的UI,其中包括PID.用户.I/O.进程等相关信息.Linux下的IO统计工具如iostat, ...

随机推荐

使用aggregate在MongoDB中查找重复的数据记录

我们知道,MongoDB属于文档型数据库,其存储的文档类型都是JSON对象.正是由于这一特性,我们在Node.js中会经常使用MongoDB进行数据的存取.但由于Node.js是异步执行的,这就导致我 ...

Nodejs-搭建Nodejs开发环境

学习nodejs,需要一个好的开发工具,并不想用无智能提示和不友好格式的记事本编写 1. 从www.nodejs.org下载nodejs并安装到指定的目录. 2. 下载一个开发工具, 可以选择webs ...

Vi编辑器下使用分屏显示【已自己验证所有】

:new 水平分割出一个新窗口 :vnew,:vne 垂直分割出一个新窗口 :new+文件路径/文件名; 在新的水平分屏中 载入/新建 文件.[文件存在则载入,不存在则在指定的路径新建,下同] :vn ...

Mysql 系统参数 系统变量 状态变量

1.系统参数,也就是命令行选项,执行命令的时候,后面跟的参数,系统参数很多,不可能每次执行程序的时候,指定这些参数.这些参数写在配置文件(Windows下是my.ini,Linux是my.cnf),执 ...

mysql学习之-逻辑架构

mysql逻辑架构图: 第一层,服务层(为客户端服务):为请求做连接处理,授权认证,安全等. 1.  每个连接的查询都在一个进程中的线程完成. 2.  服务器负责缓存线程,所以服务层不需要为每个连接新 ...

【HDOJ】3183 A Magic Lamp

RMQ. /* 3183 */ #include #include #include #define MA ...

navicat为mysql建立索引

索引的目的是大大提高查询效率,还有读写效率. kettle向sql里面插入,更新时,也要建立索引,可以大大提升处理时间. 但是建立索引报错:Specified key was too long; ma ...

51Nod 1668 非010串

这是昨天上课ChesterKing dalao讲线代时的例题 当时看到这道题就觉得很水,记录一下后面两位的情况然后讨论一下转移即可 由于之前刚好在做矩阵题,所以常规的矩阵快速幂优化也很简单 好我们开始 ...

部署java项目到服务器

1.首先判断服务器是什么系统 linux,windows 2.如果是linux使用SSH进行链接 3.如果是windows使用远程桌面进行链接 1.windows+R->mstsc进行远程桌面的 ...

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值