java.lang.OutOfMemoryError: Java heap space

2020-12-31 14:29:39 浏览数 (1)

溢出

这个服务本来是rpc提供方,但是消费端经常用着用着就说没有provider,期初没注意同事说重启下就好了,确实管用,但后来能用时间越来越少,重启后只能管几分钟,于是我不偷懒了,看下这个服务有什么问题,好家伙~一看原来是内存溢出,导致了rpc的socket链接都已经关闭了。报错如下:

代码语言:javascript复制
2020-12-28 14:32:50.597 ERROR 36197 --- [pool-7-thread-1] o.a.h.i.n.c.InternalHttpAsyncClient      66  : I/O reactor terminated abnormally org.apache.http.nio.reactor.IOReactorException: I/O dispatch worker terminated abnormally
        at org.apache.http.impl.nio.reactor.AbstractMultiworkerIOReactor.execute(AbstractMultiworkerIOReactor.java:359)
        at org.apache.http.impl.nio.conn.PoolingNHttpClientConnectionManager.execute(PoolingNHttpClientConnectionManager.java:194)
        at org.apache.http.impl.nio.client.CloseableHttpAsyncClientBase$1.run(CloseableHttpAsyncClientBase.java:64)
        at java.lang.Thread.run(Thread.java:745)
Caused by: java.lang.OutOfMemoryError: Java heap space



ver 10.12.25.107/10.12.25.107:2181, unexpected error, closing socket connection and attempting reconnect java.lang.OutOfMemoryError: Java heap space
        at java.util.HashMap$KeySet.iterator(HashMap.java:912)
        at java.util.HashSet.iterator(HashSet.java:172)
        at sun.nio.ch.Util$2.iterator(Util.java:243)
        at org.apache.zookeeper.ClientCnxnSocketNIO.doTransport(ClientCnxnSocketNIO.java:358)
        at org.apache.zookeeper.ClientCnxn$SendThread.run(ClientCnxn.java:1141)

查看堆占用情况

代码语言:javascript复制
jmap -heap pid

查看垃圾回收情况

代码语言:javascript复制
jstat -gcutil pid 300 //每隔300毫秒打印一次

发现老年代使用如此之高,而且垃圾回收时间也很有问题,所以就是堆内存不够用了。 而随便一个正常的服务不会这么搞,一般也就是占用不到一半。向下面这样

从配置看,现在xmx 就给了4g,是明显不够用的,先扩展到6g看下情况。

修改后

继续查看:

明显降低了,至此问题解决。

rpc

0 人点赞