java服务宕机原因查询
背景
在java服务项目上线之后经常会出现宕机的情况
常见原因
内存溢出
1.查到服务进程号
[root@wms ~]# ps -ef|grep java
root 6399 6069 0 08:57 pts/2 00:00:00 grep --color=auto java
root 25374 1 0 Oct17 ? 00:21:19 /usr/local/jdk/jre/bin/java -Djava.util.logging.config.file=/home/tomcat-wmsweb/conf/logging.properties -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager -Xms3072m -Xmx3072m -Xss512K -XX:PermSize=256m -XX:MaxPermSize=512m -Djdk.tls.ephemeralDHKeySize=2048 -Djava.endorsed.dirs=/home/tomcat-wmsweb/endorsed -classpath /home/tomcat-wmsweb/bin/bootstrap.jar:/home/tomcat-wmsweb/bin/tomcat-juli.jar -Dcatalina.base=/home/tomcat-wmsweb -Dcatalina.home=/home/tomcat-wmsweb -Djava.io.tmpdir=/home/tomcat-wmsweb/temp org.apache.catalina.startup.Bootstrap start
root 25401 1 2 Oct17 ? 03:14:13 /usr/local/jdk/jre/bin/java -Djava.util.logging.config.file=/home/tomcat-wms/conf/logging.properties -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager -Xms3000m -Xmx3000m -Xss512K -XX:PermSize=256m -XX:MaxPermSize=512m -XX:-UseGCOverheadLimit -Djdk.tls.ephemeralDHKeySize=2048 -Djava.endorsed.dirs=/home/tomcat-wms/endorsed -classpath /home/tomcat-wms/bin/bootstrap.jar:/home/tomcat-wms/bin/tomcat-juli.jar -Dcatalina.base=/home/tomcat-wms -Dcatalina.home=/home/tomcat-wms -Djava.io.tmpdir=/home/tomcat-wms/temp org.apache.catalina.startup.Bootstrap start
[root@wms ~]#
2、查看内存使用情况
[root@wms ~]# jmap -heap 25401
Attaching to process ID 25401, please wait...
Debugger attached successfully.
Server compiler detected.
JVM version is 25.211-b12 using thread-local object allocation.
Parallel GC with 4 thread(s) Heap Configuration:
MinHeapFreeRatio = 0
MaxHeapFreeRatio = 100
MaxHeapSize = 3145728000 (3000.0MB)
NewSize = 1048576000 (1000.0MB)
MaxNewSize = 1048576000 (1000.0MB)
OldSize = 2097152000 (2000.0MB)
NewRatio = 2
SurvivorRatio = 8
MetaspaceSize = 21807104 (20.796875MB)
CompressedClassSpaceSize = 1073741824 (1024.0MB)
MaxMetaspaceSize = 17592186044415 MB
G1HeapRegionSize = 0 (0.0MB) Heap Usage:
PS Young Generation
Eden Space:
capacity = 607649792 (579.5MB)
used = 607649792 (579.5MB)
free = 0 (0.0MB)
100.0% used
From Space:
capacity = 213385216 (203.5MB)
used = 0 (0.0MB)
free = 213385216 (203.5MB)
0.0% used
To Space:
capacity = 201326592 (192.0MB)
used = 0 (0.0MB)
free = 201326592 (192.0MB)
0.0% used
PS Old Generation
capacity = 2097152000 (2000.0MB)
used = 2097149664 (1999.9977722167969MB)
free = 2336 (0.002227783203125MB)
99.99988861083985% used 121339 interned Strings occupying 10592008 bytes.
发现 Eden Space 100.0% used
PS Old Generation 100.0% used
确认为内存溢出
接下来我们需要查看到底是那个大对象造成的这个问题
由于堆内对象信息太多,因此需要输出到问题中查看
[root@wms ~]# jmap -histo:live 25401 >aaa.log
查看大对象信息
[root@wms ~]# vim aaa.log num #instances #bytes class name
----------------------------------------------
1: 23798913 925276392 [C
2: 23791642 570999408 java.lang.String
3: 879806 201469128 [Ljava.lang.Object;
4: 717239 189351096 com.demo.inventory.query.GetTaskCountQueryItem
5: 5247003 125928072 java.lang.Double
6: 932106 82025328 java.lang.reflect.Method
7: 2144995 68639840 java.util.HashMap$Node
8: 1457567 46642144 java.sql.Timestamp
9: 725212 40611872 org.hibernate.engine.EntityEntry
10: 725213 34810224 org.hibernate.engine.EntityKey
11: 180443 26468992 [Ljava.util.HashMap$Node;
12: 549431 26372688 org.aspectj.weaver.reflect.ShadowMatchImpl
13: 655720 26228800 java.util.LinkedHashMap$Entry
14: 239773 25712128 java.lang.Class
15: 780484 24975488 org.apache.commons.collections.SequencedHashMap$Entry
16: 1535589 24569424 java.lang.Integer
17: 656230 20999360 java.util.concurrent.ConcurrentHashMap$Node
18: 869529 20868696 java.util.ArrayList
19: 822486 20851440 [Ljava.lang.String;
20: 66016 19964336 [B
21: 549431 17581792 org.aspectj.weaver.patterns.ExposedState
22: 705540 15311776 [Z
23: 549431 11702568 [Lorg.aspectj.weaver.ast.Var;
24: 725212 11603392 org.hibernate.util.IdentityMap$IdentityKey
25: 158941 8900696 java.util.LinkedHashMap
26: 324828 7247936 [I
27: 162778 6511120 java.lang.ref.SoftReference
28: 476 6288080 [Ljava.util.concurrent.ConcurrentHashMap$Node;
29: 110595 5308560 java.util.HashMap
30: 155487 4975584 java.lang.ref.WeakReference
31: 16090 3732880 com.demo.inventory.query.WmInvLotLocTraceIdQueryItem
32: 163337 3313312 [Ljava.lang.Class;
33: 41098 3287840 java.lang.reflect.Constructor
34: 51249 3279936 org.hibernate.mapping.Column
35: 81913 3276520 java.util.WeakHashMap$Entry
36: 35571 3047840 [[Ljava.lang.String;
37: 51247 2869832 org.hibernate.mapping.Property
38: 51249 2459952 org.hibernate.mapping.SimpleValue
39: 49720 1988800 org.hibernate.annotations.common.reflection.java.JavaXProperty
40: 48352 1934080 org.hibernate.tuple.StandardProperty
41: 78677 1888248 java.beans.MethodRef
由上可知com.demo.inventory.query.GetTaskCountQueryItem 导致内存过大,应优化处理。
本博文来源于:https://blog.csdn.net/weixin_43159039/article/details/102676161
java服务宕机原因查询的更多相关文章
- 线上服务宕机,码农试用期被毕业,原因竟是给MySQL加个字段
1. 问题:怎么给线上表加字段? 工作中最常遇到的问题,怎么给线上频繁使用的大表添加字段? 比如:给下面的用户表(user)添加年龄(age)字段. CREATE TABLE `user` ( `id ...
- 由Redis的hGetAll函数所引发的一次服务宕机事件
昨晚通宵生产压测,终于算是将生产服务宕机的原因定位到了,心累.这篇博客,算作一个复盘和记录吧... 先来看看Redis的缓存淘汰算法思维导图: 说明:当实际占用的内存超过Redis配置的maxmemo ...
- 记-ItextPDF+freemaker 生成PDF文件---导致服务宕机
摘要:已经上线的项目,出现服务挂掉的情况. 介绍:该服务是专门做打印的,业务需求是生成PDF文件进行页面预览,主要是使用ItextPDF+freemaker技术生成一系列PDF文件,其中生成流程有:解 ...
- java调用jni oci接口宕机原因排查
调用最简单的JNI没有出错,但是涉及到OCI时就会异常退出,分析后基本确定是OCI 11g中的signal所致,参考ora-24550 signo=6 signo=11解决. 但是这个相同的so库直接 ...
- app微信支付-java服务端接口 支付-查询-退款
个人不怎么看得懂微信的文档,看了很多前辈的写法,终于调通了,在这里做一下记录. 首先来定义各种处理类(微信支付不需要特殊jar包,很多处理需要自己封装,当然也可以自己写完打个jar包) 参数要用jdo ...
- Solr4.8.0源码分析(26)之Recovery失败造成的宕机原因分析
最近在公司做SolrCloud的容灾测试,刚好碰到了一个比较蛋疼的问题,跟SolrCloud的Recovery和leader选举有关,正好拿出来分析下. 现象是这样的:比如我有一台3个shard的So ...
- Keepalived 双机web服务宕机检测切换系统软件
简介 Keepalived的作用是检测web服务器的状态,如果有一台web服务器死机,或工作出现故障,Keepalived将检测到,并将有故障的web服务器从系统中剔除,当web服务器工作正常后Kee ...
- [Python Debug]Kernel Crash While Running Neural Network with Keras|Jupyter Notebook运行Keras服务器宕机原因及解决方法
最近做Machine Learning作业,要在Jupyter Notebook上用Keras搭建Neural Network.结果连最简单的一层神经网络都运行不了,更奇怪的是我先用iris数据集跑了 ...
- MySQL - 高可用性:少宕机即高可用?
我们之前了解了复制.扩展性,接下来就让我们来了解可用性.归根到底,高可用性就意味着 "更少的宕机时间". 老规矩,讨论一个名词,首先要给它下个定义,那么什么是可用性? 1 什么是可 ...
随机推荐
- IDEA将项目打包为指定class文件的jar
转自:https://blog.csdn.net/makang456/article/details/86699375 [背景] 公司最近要和某大公司合作,将本公司的产品提供给其它公司单独部署 ...
- Spring实战(十三)Spring事务
1.什么是事务(Transaction)? 事务是指逻辑上的一组操作,要么全部成功,要么全部失败. 事务是指将一系列数据操作捆绑成为一个整体进行统一管理.如果某一事务执行成功,则该事务中进行的所有数据 ...
- wpf之二进制资源
一.当需要添加图片.音频.视屏的资源到wpf项目里是,可以直接把文件添加到项目里 右击add->existing item. 1.如果想将外部文件编异常目标成为二进制资源,在文件的属性窗口 Bu ...
- 【强化学习】MOVE37-Introduction(导论)/马尔科夫链/马尔科夫决策过程
写在前面的话:从今日起,我会边跟着硅谷大牛Siraj的MOVE 37系列课程学习Reinforcement Learning(强化学习算法),边更新这个系列.课程包含视频和文字,课堂笔记会按视频为单位 ...
- mybatis抛出异常(java.sql.SQLException: Incorrect string value: '\xF0\x9F\x92\x94' for column 'name' at row 1)
文章参考 https://blog.csdn.net/junsure2012/article/details/42171035 https://www.cnblogs.com/WangYunShuai ...
- Spring自定义标签的实现
首先 简单写下 spring xml解析的过程 通过一段简单的 调用spring代码开始 public static void main(String[] args) { ApplicationCon ...
- Windows 系统自动登录配置
1. open regedit 2. HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon 3.在打开的项右 ...
- 通俗讲解python__new__()方法
目录 通俗讲解python__new__()方法 引子: 小结: 通俗讲解python__new__()方法 转载于别人的博客https://blog.csdn.net/sj2050/article/ ...
- SQL优化策略
mysql添加索引 1.主键索引LATER TABLE 'table_neme' ADD PRIMARY KEY('column');2.唯一索引unique空串(null)可以放多个 如果是具体的内 ...
- SVN搭建以及客户端使用
第1章 CentOS下搭建SVN服务器 1.1 SVN简介 SVN是Subversion的简称,是一个开放源代码的版本控制系统,相较于RCS.CVS,它采用了分支管理系统,它的设计目标就是取代CVS. ...