线上遇到的问题

一、服务器cpu使用100%d的解决方法
1、查找哪些进程在耗cpu
使用top命令
2、把进程的栈dump到文件里,以便后面的分析
jstack 6633 > cpu1128.log
3、看看这个进程里面哪些线程在占用cpu
top -p 6633 -H
4、接着要看刚才dump出来的cpu日志了,里面会有6633这个进程下面每个线程的栈信息,但是是十六进制显示的,所以先把5159转换成16进制
printf “%0x\n” 5159
5、在cpu日志里找PID=1427的线程

二、内存溢出(outof memory error)
在这里插入图片描述
请求出现内存溢出异常,是一个项目出现的,因为我没有参与过,不太清楚具体情况。

PermSpace主要是存放静态的类信息和方法信息,静态的方法和变量,final标注的常量信息等。指的是方法区。
这个出现异常可能是请求数据太多,请求也很多,导致方法区内存不够用。
增加-XX:PermSize和-XX:MaxPermSize的大小。

可以使用jstat命令查看永久区的内存使用情况
Java Virtual Machine Statistics Minitoring Tool 用于收集HotSpot虚拟机各方面的运行数据,可以显示本地或远程虚拟机进程中的类装载、内存、垃圾收集、JIT编译等运行数据。
jstat [option vmid [interval[s|ms] [count]] ]

jstat输出的数据都是以kb为单位的。

– VMID与LVMID需要特别说明下:如果是本地虚拟机进程,VMID和LVMID是一致的
option代表这用户希望查询的虚拟机信息,主要分为3类:类装载、垃圾收集和运行期编译状况,具体选项及作用如下:

-class :监视类装载、卸载数量、总空间及类装载所耗费的时间

-gc 监视Java堆状况,包括Eden区、2个Survivor区、老年代、永久代等的容量

-gccapacity 监视内容与-gc基本相同,但输出主要关注Java堆各个区域使用到的最大和最小空间

-gcutil 监视内容与-gc基本相同,但输出主要关注已使用空间占总空间的百分比 (这是博主在性能监控中最常用的选项)

-gccause 与-gcutil功能一样,但是会额外输出导致上一次GC产生的原因

-gcnew 监视新生代GC的状况

-gcnewcapacity 监视内容与-gcnew基本相同,输出主要关注使用到的最大和最小空间

-gcold 监视老年代GC的状况

-gcoldcapacity 监视内容与——gcold基本相同,输出主要关注使用到的最大和最小空间

-gcpermcapacity 输出永久代使用到的最大和最小空间

-compiler 输出JIT编译器编译过的方法、耗时等信息

-printcompilation 输出已经被JIT编译的方法

例如:jstat -gcpermcapacity pid

发布了45 篇原创文章 · 获赞 9 · 访问量 3万+

猜你喜欢

转载自blog.csdn.net/zhanglinlove/article/details/89494455