`
smallvq123
  • 浏览: 36830 次
  • 性别: Icon_minigender_1
  • 来自: 苏州
社区版块
存档分类
最新评论

linux下几种常用的排查问题指令

阅读更多

jstatd
启动jvm监控服务。它是一个基于rmi的应用,向远程机器提供本机jvm应用程序的信息。默认端口1099。
实例:jstatd -J-Djava.security.policy=my.policy

my.policy文件需要自己建立,内如如下:
grant codebase "file:$JAVA_HOME/lib/tools.jar" {
 permission java.security.AllPermission;
};
这是安全策略文件,因为jdk对jvm做了jaas的安全检测,所以我们必须设置一些策略,使得jstatd被允许作网络操作

jps
列出所有的jvm实例
实例:
jps
列出本机所有的jvm实例

jps 192.168.0.77
列出远程服务器192.168.0.77机器所有的jvm实例,采用rmi协议,默认连接端口为1099
(前提是远程服务器提供jstatd服务)

输出内容如下:
jones@jones:~/data/ebook/java/j2se/jdk_gc$ jps
6286 Jps
6174  Jstat

jconsole
一个图形化界面,可以观察到java进程的gc,class,内存等信息。虽然比较直观,但是个人还是比较倾向于使用jstat命令(在最后一部分会对jstat作详细的介绍)。

jinfo(linux下特有)
观察运行中的java程序的运行环境参数:参数包括Java System属性和JVM命令行参数
实例:jinfo 2083
其中2083就是java进程id号,可以用jps得到这个id号。
输出内容太多了,不在这里一一列举,大家可以自己尝试这个命令。

jstack(linux下特有)
可以观察到jvm中当前所有线程的运行情况和线程当前状态
jstack 2083
输出内容如下:


 

jmap(linux下特有,也是很常用的一个命令)
观察运行中的jvm物理内存的占用情况。
参数如下:
-heap
:打印jvm heap的情况
-histo:打印jvm heap的直方图。其输出信息包括类名,对象数量,对象占用大小。
-histo:live :同上,但是只答应存活对象的情况
-permstat:打印permanent generation heap情况

命令使用:
jmap -heap 2083
可以观察到New Generation(Eden Space,From Space,To Space),tenured generation,Perm Generation的内存使用情况
输出内容:


 

jmap -histo 2083 | jmap -histo:live 2083
可以观察heap中所有对象的情况(heap中所有生存的对象的情况)。包括对象数量和所占空间大小。
输出内容:


 
写个脚本,可以很快把占用heap最大的对象找出来,对付内存泄漏特别有效。

jstat
最后要重点介绍下这个命令。
这是jdk命令中比较重要,也是相当实用的一个命令,可以观察到classloader,compiler,gc相关信息
具体参数如下:
-class:统计class loader行为信息
-compile:统计编译行为信息
-gc:统计jdk gc时heap信息
-gccapacity:统计不同的generations(不知道怎么翻译好,包括新生区,老年区,permanent区)相应的heap容量情况
-gccause:统计gc的情况,(同-gcutil)和引起gc的事件
-gcnew:统计gc时,新生代的情况
-gcnewcapacity:统计gc时,新生代heap容量
-gcold:统计gc时,老年区的情况
-gcoldcapacity:统计gc时,老年区heap容量
-gcpermcapacity:统计gc时,permanent区heap容量
-gcutil:统计gc时,heap情况
-printcompilation:不知道干什么的,一直没用过。

一般比较常用的几个参数是:
jstat -class 2083 1000 10 (每隔1秒监控一次,一共做10次)
输出内容含义如下:

Loaded Number of classes loaded.
Bytes Number of Kbytes loaded.
Unloaded Number of classes unloaded.
Bytes Number of Kbytes unloaded.
Time Time spent performing class load and unload operations.




jstat -gc 2083 2000 20(每隔2秒监控一次,共做10)

输出内容含义如下:

S0C Current survivor(存活的) space 0 capacity (KB).
EC Current eden space capacity (KB).
EU Eden space utilization (KB).
OC Current old space capacity (KB).
OU Old space utilization (KB).
PC Current permanent space capacity (KB).
PU Permanent space utilization (KB).
YGC Number of young generation GC Events.
YGCT Young generation garbage collection time.
FGC Number of full GC events.
FGCT Full garbage collection time.
GCT Total garbage collection time.

 

输出内容:


 

 

 监控内存使用情况 参数 (查看内存溢出相对有用)

jstat -gccause 2083 5000 (每隔5秒监控一次)
输出内容含义如下:

 

 

S0 Survivor space 0 utilization as a percentage of the space's current capacity.
S1 Survivor space 1 utilization as a percentage of the space's current capacity.
E Eden space utilization as a percentage of the space's current capacity.
O Old space utilization as a percentage of the space's current capacity.
P Permanent space utilization as a percentage of the space's current capacity.
YGC Number of young generation GC events.
YGCT Young generation garbage collection time.
FGC Number of full GC events.
FGCT Full garbage collection time.
GCT Total garbage collection time.
LGCC Cause of last Garbage Collection.
GCC Cause of current Garbage Collection.

 


如果能熟练运用这些命令,尤其是在linux下,那么完全可以代替jprofile等监控工具了,谁让它收费呢。呵呵。
用命令的好处就是速度快,并且辅助于其他命令,比如grep gawk sed等,可以组装多种符合自己需求的工具。

转自:http://dolphin-ygj.iteye.com/blog/366216

分享到:
评论

相关推荐

    动态分等级打印.Linux 程序开发打印 Debug 信息的使用技巧--C语言中几种输出调试信息的方法_精品文库_IThao12

    本文将介绍C语言中几种常见的输出调试信息的方法。 首先,我们来看一个示例代码片段,这段代码展示了如何自定义宏来实现不同类型的调试输出: 1. `DEBUG_LINE()` 宏用于打印当前源文件、函数名和行号,方便追踪...

    常见Linux系统故障与解决方法.doc

    以下是几种常见原因及对应的解决方案: 1. **文件系统配置不当**:如`/etc/inittab`或`/etc/fstab`配置错误,可通过修复或恢复备份来解决。 2. **非法关机导致根分区损坏**:使用救援模式修复根文件系统,或利用...

    linux常见面试题答案

    - **知识点**:vi编辑器是一种强大的文本编辑器,在命令模式下可以执行编辑指令,而在输入模式下则可以进行文本的插入和编辑。 #### 27. 可以用ls –al命令来观察文件的权限,每个文件的权限都用10位表示,并分为四...

    tomcat-8.5.24_for_Linux CSDN 下载

    【标题】"Tomcat 8.5.24 for Linux CSDN 下载"涉及到的知识点包括以下几个方面: 1. **Tomcat服务器**: Tomcat是一个由Apache软件基金会开发的开源Java Servlet容器,它实现了Java EE的Web应用程序部署规范。Tomcat...

    Linux-查看日志指令

    根据提供的文件信息,本文将详细解释Linux中常用的几种查看日志的方法及命令,并结合实例进行说明。 ### 一、Linux查看日志的基本方法 在Linux系统中,日志文件是系统管理和故障排查的重要依据之一。通常,日志...

    ARM+LINUX入门与实践 503页 43.7M 高清书签版电子书下载

    10. **调试与维护**:介绍常用的Linux命令行工具,以及远程调试和故障排查技巧。 通过学习这本书,读者不仅能掌握ARM/Linux开发的基本技能,还能了解到如何将这些知识应用于实际项目中。对于希望进入嵌入式Linux...

    linux基础入门教程

    本教程可能侧重于某一种或几种常见发行版。 3. **Linux shell**:shell是Linux的命令行界面,允许用户通过输入指令来执行任务。bash(Bourne-Again SHell)是最常见的shell,也是本教程的重点。 4. **基本Linux...

    sigar dll for win and linux.rar

    5. **故障排查**:Sigar还可以帮助诊断系统问题,比如查找内存泄漏、分析CPU负载过高或网络连接异常的原因。 6. **示例和文档**:为了便于理解和使用,Sigar项目通常会提供丰富的示例代码和详细的文档,帮助开发者...

    Linux2.6下Makefile文件的分析与研究

    在Linux2.6内核环境下,Makefile的编写需特别注意以下几点: 1. **模块格式**:与早期版本不同,Linux2.6内核下的模块格式由`.o`改为`.ko`,这有助于模块接口的标准化,便于设备的控制和管理。 2. **调试信息**:...

    shell脚本定时清理linux清理内存脚本.rar

    Shell脚本是Linux下进行自动化任务的常用工具,通过编写简单的命令行指令,可以实现定期执行特定任务的功能。在这个"shell脚本定时清理linux清理内存脚本"中,可能包含以下几类操作: 1. **显示内存状态**:使用`...

    Linux操作系统基础教程[归纳].pdf

    关于进程处理,文档提到了几个关键指令,如pgrep用于根据名称查找进程,killall根据名字结束所有进程,nohup确保命令在后台持续运行,即使用户注销也不会受影响。这些命令对于日常系统维护和故障排查至关重要。 总...

    linux下oracle使用命令.docx

    在Linux环境下,管理和操作Oracle数据库涉及一系列的命令行指令,这对于数据库管理员和运维人员来说是必不可少的技能。本文将详细讲解这些命令以及Oracle数据库的启动和关闭方法。 首先,要进入Linux系统并打开终端...

    linux 开机程序研讨

    Linux是一种自由开放源代码的操作系统,其内核由Linus Torvalds于1991年首次发布,并逐渐发展成为全球范围内广泛使用的操作系统之一。Linux系统的启动过程非常复杂,涉及到多个阶段和技术细节,对于初学者来说,了解...

    redis-5.0.10 linux x64

    Redis是一款高性能的键值存储系统,它被广泛用于数据库、缓存和消息中间件等场景。Redis-5.0.10是Redis的一个稳定版本,...在实际应用中,你还需要关注Redis的监控、性能调优和问题排查,确保系统的稳定性和高效运行。

    Linux系统管理及应用项目式教程shell编程部分的源代码.zip

    了解Linux系统管理涉及以下几个方面: - 文件和目录操作:包括创建、删除、移动、复制、权限设置等。 - 进程管理:启动、终止进程,查看进程状态,以及进程间通信。 - 系统服务管理:通过`systemd`或`init`系统...

    linux系统服务控制共12页.pdf-文档整理可打印.z

    Linux系统服务控制是操作系统管理的核心部分,它负责启动、停止以及监控系统中的各种服务。这份12页的PDF文档很可能是对Linux系统服务控制的详细教程,涵盖了如何配置、管理和优化这些服务。在这个主题中,我们可以...

    GPRS模块在Linux平台上ppp拨号上网总结与心得

    在Linux平台上实现GPRS模块的PPP拨号上网,通常有以下几种方法: ###### 方法一:使用`wvdial` - **简介**:`wvdial`是基于`pppd`的一个图形界面工具,它可以简化PPP连接的配置过程。 - **使用方法**:安装`wvdial`...

Global site tag (gtag.js) - Google Analytics