博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Java项目相关监控与调优
阅读量:6538 次
发布时间:2019-06-24

本文共 3154 字,大约阅读时间需要 10 分钟。

Linux  JVM Tomcat

=========Linux ===============

监控 nmon  命令:nmon -s 10 -c 60 -f -m /home

-s 10 每10s收集一次

-c 60 一共收集60次

-f 保存带时间的文件名

-m 保存目录

=========JVM ====================

监控 jps jstack jstat

jps在linux系统获得java应用进程号  命令:jps -m -l

-------------------------------------

jstat获得gc 内存分配情况 命令:jstat -gcutil pid 3000 6

3000 每3秒收集一次

6 收集6次

JVM配置:

 

在哪里设置,分好几种情况: 1、集成开发环境下启动并使用JVM,如eclipse需要修改根目录文件eclipse.ini; 2、Windows服务器下安装版Tomcat,可使用Tomcat7w.exe工具(tomcat目录下)和直接修改注册表两种方式修改Jvm参数; 3、Windows服务器解压版Tomcat注册Windows服务,方法同上; 4、解压版本的Tomcat, 通过startup.bat启动tomcat加载配置的,在tomcat 的bin 下catalina.bat 文件内添加; 5、Linux服务器Tomcat设置JVM,修改TOMCAT_HOME/bin/catalina.sh; 不同的中间件服务器有不同的配置方式,tomcat、jboss、weblogic、websphere等各不相同,tomcat的上面已经说了,jboss的在run.sh中设置,weblogic在setDomainEnv.sh中设置,websphere在jvm.options中设置

 

 

典型JVM参数设置: java -Xmx3550m -Xms3550m -Xmn2g -Xss128k -Xmx3550m:设置JVM最大可用内存为3550M。 -Xms3550m:设置JVM促使内存为3550m。此值可以设置与-Xmx相同,以避免每次完成后JVM重新。 -Xmn2g:设置年轻代大小为2G。整个堆大小=年轻代大小 + 年老代大小 + 持久代大小。持久代一般固定大小为64m,所以增大年轻,将会减小年老代大小。此值对系统性能影响较大,Sun官方推荐配置为整个堆的3/8。 -Xss128k:设置每个线程的堆栈大小。JDK5.0以后每个线程堆栈大小为1M,以前每个线程堆栈大小为256K。更具应用的线程所需内存大小进行调整。在相同物理内存下,减小这个值能生成更多的线程。但是操作系统对一个进程内的线程数还是有限制的,不能无限生成,经验值在3000~5000左右。 java -Xmx3550m -Xms3550m -Xss128k -XX:NewRatio=4 -XX:SurvivorRatio=4 -XX:MaxPermSize=16m -XX:MaxTenuringThreshold=0 -XX:NewRatio=4:设置年轻代(包括Eden和两个Survivor区)与年老代的比值(除去持久代)。设置为4,则年轻代与年老代所占比值为1:4,年轻代占整个堆栈的1/5 -XX:SurvivorRatio=4:设置年轻代中Eden区与Survivor区的大小比值。设置为4,则两个Survivor区与一个Eden区的比值为2:4,一个Survivor区占整个年轻代的1/6 -XX:MaxPermSize=16m:设置持久代大小为16m。

 ------------------------------------------------

 

 

-----------------------jmap------dump java内存堆-----------------------

 

jps -m -l查找java进程pid

------------

查找此进程的端口号

netstat -nap | grep pid

netstat -nap | grep 7197

-----------

 

jmap -heap pid 看此进程的堆信息

dump java堆

jmap -dump:format=b,file=test.bin pid

jmap -dump:format=b,file=test.bin 7023

 

-----------------------------------------------------------------

-------------------------jstack------------------------------

jstack获得java进程中的堆栈信息 命令:jstack -l pid >d:stack.txt

可以在里面搜寻deadlock等信息,线程死锁。热锁。

也可以统计线程状态信息,如果大量线程都处于wait on condition,若看到线程正在等待网络读写,那么可能会出现了网络瓶颈。

 ---------------------------------

top查找出哪个进程消耗的cpu高 

1、top ,按住shift+p结果是按照cpu占用从高到底排序拿到pid

2、top -H -p pid,然后再按shift+p。这里意思为只查看pid的进程,线程按照cpu占用从高到底排序,显示线程tid。

jstack [进程pid]|grep -A 10 [线程tid的16进制] 

-A 10表示查找到所在行的后10行。21233用计算器转换为16进制52f1,注意字母是小写。 

输出到文档:jstack [进程pid]|grep -A 10 [线程tid的16进制] >stack01.txt

用IBM thread and monitor dump analyzer for java工具  分析dump文件

说不定可以一下子定位到出问题的代码。

 

命令:jstack executable core

如果java程序崩溃生成core文件,jstack工具可以用来获得core文件的java stack和native stack的信息,从而可以轻松地知道java程序是如何崩溃和在程序何处发生问题。

JVM内存、垃圾回收相关的一些参数设置

JVM 类装载器,执行引擎,运行时数据区(内存)

GC 年轻代 年老代 永久代  gc, full gc

=========Tomcat=================

Tomcat是web容器,装载jsp servlet; Apache装载静态页面html

tomcat 开启文件压缩 线程池 设置等调优

Mysql监控 mysqlmtop

Oracle监控spotlight on oracle

===================iostat监控磁盘==================

yum install sysstat

iostat=>

iostat -d -k 1 10         #查看TPS和吞吐量信息(磁盘读写速度单位为KB)iostat -d -m 2            #查看TPS和吞吐量信息(磁盘读写速度单位为MB)iostat -d -x -k 1 10      #查看设备使用率(%util)、响应时间(await) iostat -c 1 10 #查看cpu状态

转载于:https://www.cnblogs.com/AmilyWilly/p/6163657.html

你可能感兴趣的文章
4、动态代理
查看>>
Loj #6073.「2017 山东一轮集训 Day5」距离
查看>>
我的TCP/IP学习笔记
查看>>
shell--字符串的截取变量子串串
查看>>
Cas_个人理解
查看>>
UISearchController
查看>>
轮毂电机光电增量编码器的ABZ信号详解
查看>>
TextBox Template
查看>>
Linux MySQL 储存中文失败简单解决办法
查看>>
洛谷——P1330 封锁阳光大学
查看>>
css选择器
查看>>
zabbix-agent配置文件说明
查看>>
linux系统配置之bash shell的配置(centos)
查看>>
linux C 9*9
查看>>
hdu 1695: GCD 【莫比乌斯反演】
查看>>
python的string操作总结
查看>>
如何把word中的图片怎么导出来呢?
查看>>
CMD指令大全
查看>>
十五天精通WCF——第二天 告别烦恼的config配置
查看>>
Qt多线程学习:创建多线程
查看>>