MyCAT报java.lang.OutOfMemoryError: Java heap space
早上同事反映,mycat又假死了,估计还是内存溢出,查看了一下错误日志。
INFO | jvm | // :: | java.lang.OutOfMemoryError: Java heap space
INFO | jvm | // :: | Exception in thread "Timer67" java.lang.OutOfMemoryError: Java heap space
INFO | jvm | // :: | Exception in thread "Timer68" java.lang.OutOfMemoryError: Java heap space
INFO | jvm | // :: | Exception in thread "Timer69" java.lang.OutOfMemoryError: Java heap space
INFO | jvm | // :: | Exception in thread "Timer70" java.lang.OutOfMemoryError: Java heap space
INFO | jvm | // :: | Exception in thread "Timer71" java.lang.OutOfMemoryError: Java heap space
INFO | jvm | // :: | Exception in thread "Timer72" java.lang.OutOfMemoryError: Java heap space
INFO | jvm | // :: | Exception in thread "Timer74" java.lang.OutOfMemoryError: Java heap space
INFO | jvm | // :: | Exception in thread "Timer73" java.lang.OutOfMemoryError: Java heap space
堆内存溢出,以为是内存不足,但与前几天的报错又不一样
INFO | jvm | // :: | Exception in thread "$_MyCatServer" java.lang.OutOfMemoryError: Direct buffer memory
INFO | jvm | // :: | at java.nio.Bits.reserveMemory(Bits.java:)
INFO | jvm | // :: | at java.nio.DirectByteBuffer.<init>(DirectByteBuffer.java:)
INFO | jvm | // :: | at java.nio.ByteBuffer.allocateDirect(ByteBuffer.java:)
而且,通过查看wrapper.conf,发现MaxDirectMemorySize已经设置为10G了,刚开始一直按默认2G来,偶尔会出现内存溢出。
wrapper.java.additional.=-XX:MaxDirectMemorySize=10G
后来,一高人指点,通过jmap -heap pid命令查看,发现MaxHeapSize=16MB
Heap Configuration:
MinHeapFreeRatio =
MaxHeapFreeRatio =
MaxHeapSize = (.0MB)
NewSize = (.25MB)
MaxNewSize = MB
OldSize = (.1875MB)
NewRatio =
SurvivorRatio =
PermSize = (.75MB)
MaxPermSize = (.0MB)
G1HeapRegionSize = (.0MB)
不科学啊,wrapper.conf中有关堆内存的设置没这么小啊
wrapper.java.additional.=-Xmx4G
wrapper.java.additional.=-Xms1G # Initial Java Heap Size (in MB)
wrapper.java.initmemory=4G # Maximum Java Heap Size (in MB)
wrapper.java.maxmemory=15G
最后才发现,问题出在wrapper.java.initmemory=4G和wrapper.java.maxmemory=15G上了。
原来,这两个参数直接设置数值就可以了,因为它的单位已经已经指明了,为MB。
如果设置为15G,jvm会直接屏蔽掉后面的G,使用15,然后MaxHeapSize将会被设置为16MB(后来测试了一下,如果设置为17,MaxHeapSize则会被设置为18MB,至于为什么每次都分配为偶数,这个就不太清楚了)。
后来测试了一下,得出以下结论:
1. wrapper.java.maxmemory参数会覆盖wrapper.java.additional.10参数。
2. 即便wrapper.java.maxmemory的值超过了4096,MaxHeapSize最大为4096MB。
3. 如果堆大小要超过4096MB,可设置wrapper.java.additional.10,同时注释掉wrapper.java.maxmemory。
建议,只使用wrapper.java.additional.10=-Xmx4G和wrapper.java.additional.11=-Xms1G配置堆内存的大小。
总结:
mycat的启动方式有两种
1. mycat/bin/mycat start
这种方式会使用mycat/conf/wrapper.conf作为配置文件
通过 sh -x mycat start即可发现
+ eval '"/usr/local/mycat/bin/./wrapper-linux-x86-64"' '"/usr/local/mycat/conf/wrapper.conf"' wrapper.syslog.ident=mycat 'wrapper.pidfile="/usr/local/mycat/logs/mycat.pid"' wrapper.daemonize=TRUE 'wrapper.lockfile="/var/lock/subsys/mycat"'
++ /usr/local/mycat/bin/./wrapper-linux-x86- /usr/local/mycat/conf/wrapper.conf wrapper.syslog.ident=mycat wrapper.pidfile=/usr/local/mycat/logs/mycat.pid wrapper.daemonize=TRUE wrapper.lockfile=/var/lock/subsys/myca
2. mycat/bin/startup_nowrap.sh
这个脚本里面同样有关于jvm的配置
JAVA_OPTS="-server -Xms2G -Xmx2G -XX:MaxPermSize=64M -XX:+AggressiveOpts -XX:MaxDirectMemorySize=2G"
# ./startup_nowrap.sh
"/usr/local/jdk1.7.0_79/bin/java" -DMYCAT_HOME="/usr/local/mycat" -classpath "/usr/local/mycat/conf:/usr/local/mycat/lib/classes:/usr/local/mycat/lib/curator-client-2.9.0.jar:/usr/local/mycat/lib/curator-framework-2.9.0.jar:/usr/local/mycat/lib/dom4j-1.6.1.jar:/usr/local/mycat/lib/druid-1.0.14.jar:/usr/local/mycat/lib/ehcache-core-2.6.11.jar:/usr/local/mycat/lib/fastjson-1.2.7.jar:/usr/local/mycat/lib/guava-18.0.jar:/usr/local/mycat/lib/jline-0.9.94.jar:/usr/local/mycat/lib/json-20151123.jar:/usr/local/mycat/lib/leveldb-0.7.jar:/usr/local/mycat/lib/leveldb-api-0.7.jar:/usr/local/mycat/lib/log4j-1.2.17.jar:/usr/local/mycat/lib/mapdb-1.0.7.jar:/usr/local/mycat/lib/mongo-java-driver-2.11.4.jar:/usr/local/mycat/lib/Mycat-server-1.5-GA.jar:/usr/local/mycat/lib/netty-3.7.0.Final.jar:/usr/local/mycat/lib/ojdbc14-10.2.0.3.0.jar:/usr/local/mycat/lib/sequoiadb-java-driver-1.0-20150615.070208-1.jar:/usr/local/mycat/lib/slf4j-api-1.7.12.jar:/usr/local/mycat/lib/slf4j-log4j12-1.7.12.jar:/usr/local/mycat/lib/snakeyaml-1.16.jar:/usr/local/mycat/lib/univocity-parsers-1.5.4.jar:/usr/local/mycat/lib/wrapper.jar:/usr/local/mycat/lib/xml-apis-1.0.b2.jar:/usr/local/mycat/lib/zookeeper-3.4.6.jar" -server -Xms2G -Xmx2G -XX:MaxPermSize=64M -XX:+AggressiveOpts -XX:MaxDirectMemorySize=2G org.opencloudb.MycatStartup >> "/usr/local/mycat/logs/console.log" >& &
后续-20160617
--------------------------------------------------------
通过mycat start启动失败,wrapper.log有如下报错信息:
STATUS | wrapper | // :: | Launching a JVM...
ERROR | wrapper | // :: | Startup failed: Timed out waiting for a signal from the JVM.
ERROR | wrapper | // :: | JVM did not exit on request, terminated
INFO | wrapper | // :: | JVM exited on its own while waiting to kill the application.
STATUS | wrapper | // :: | JVM exited in response to signal SIGKILL ().
后来通过startup_nowrap.sh,发现可以启动成功。
在网上找了一把,可修改conf/wrapper.conf中设置如下参数:
#设置超时时间为2小时wrapper.startup.timeout=7200
#设置心跳超时时间为1小时wrapper.ping.timeout=3600
重新通过mycat start启动,启动成功~
MyCAT报java.lang.OutOfMemoryError: Java heap space的更多相关文章
- mycat 报错 java.lang.OutOfMemoryError: Java heap space
今天排查mysql的错误日志发现 wrapper.log 中有如下错误日志 INFO | jvm 1 | 2019/10/20 12:52:31 | java.lang.OutOfMem ...
- Tomcat报java.lang.OutOfMemoryError: Java heap space错误停止运行如何解决
最近开发的一个商业项目,部署完成后,经常出现Tomcat挂掉的现象,报的异常是:java.lang.OutOfMemoryError: Java heap space,上网google了一下,了解了一 ...
- 【Xamarin报错】 COMPILETODALVIK : UNEXPECTED TOP-LEVEL error java.lang.OutOfMemoryError: Java heap space
Xamarin Android 编译报错: COMPILETODALVIK : UNEXPECTED TOP-LEVEL error java.lang.OutOfMemoryError: Java ...
- Linux运行Java出现“Exception in thread "main" java.lang.OutOfMemoryError: Java heap space”报错
在运行如下程序时出现“Exception in thread "main" java.lang.OutOfMemoryError: Java heap space”报错: java ...
- 解决sqoop报错:java.lang.OutOfMemoryError: Java heap space
报错栈: -- ::, INFO [main] org.apache.sqoop.mapreduce.db.DBRecordReader: Executing query: = ) AND ( = ) ...
- 排查sqoop报错:Error running child : java.lang.OutOfMemoryError: Java heap space
报错栈: -- ::, INFO [main] org.apache.hadoop.mapred.MapTask: Processing split: = AND = -- ::, INFO [mai ...
- Tomcat 启动项目报错 java.lang.OutOfMemoryError: Java heap space
近日使用myeclipse 部署web项目,启动tomcat时报错: SEVERE: Error waiting for multi-thread deployment of directories ...
- eclipse内存溢出报错:java.lang.OutOfMemoryError:Java heap space
今天执行了一个比較大的程序,处理的数据达到126MB数据,将数据导入数据库中,用eclipse 来訪问时候,总是出现java.lang.OutOfMemoryError:Java heap space ...
- 关于java.lang.OutOfMemoryError: Java heap space的错误分析
今天无意间遇到这个错误:java.lang.OutOfMemoryError: Java heap space 问题出现原因:使用a标签实现快速下载[当然已经实现了,但想了想还是要归纳解决这类问题] ...
随机推荐
- Smart3D系列教程2之 《为什么三维重建效果这么差?——探探那些被忽略的拍照要求和技巧》
一.照片采集的实用概念 根据照片进行三维重建的过程中,有人没怎么遇到坑,有人被坑的不轻.可能是模型的纹理失真,模型的法线错了,模型会生成我们各种也想不到的结果,那么,是什么导致三维重建效果这么差的?是 ...
- 使用canvas绘制一个时钟
周末学习canvas的一些基础功能,顺带写了一个基础的时钟.现在加工一下,做的更好看一点,先放上效果图: 谈一些自己的理解: (1).要绘制一个新的样式(不想被其他样式影响,或者影响到其他样式),那么 ...
- unity3d中获得物体的size
以size的x方向为例 1:gameObject.renderer.bounds.size.x;//这个值的结果真实反应出有MeshRenderer这个组件的模型的尺寸.不需要再乘以localScal ...
- bootstrap基本模板
<!DOCTYPE html><!--html5文档格式--> <html lang="zh-CN"><!--申明语言是中文简体--> ...
- Base64 转换 %2B 变 空格 解决
//此方法转换会转换出错 deString.ServerUrlDecode().Replace(" ", "+") //换此方法完美解决 HttpUtility ...
- FFT时域与频域的关系,以及采样速率与采样点的影响
首先对于FFT来说,输入的信号是一个按一定采样频率获得的信号序列,而输出是每个采样点对应的频率的幅度(能量). 下面详细分析: 在FFT的输出数据中,第一个值是直流分量的振幅(这样对应周期有无穷的可能 ...
- SQL Server2014 哈希索引原理
SQL Server2014 哈希索引原理 翻译自:http://www.sqlservercentral.com/blogs/sql-and-sql-only/2015/09/08/hekaton- ...
- HDFS 与 GFS 的设计差异
后端分布式系列」前面关于 HDFS 的一些文章介绍了它的整体架构和一些关键部件的设计实现要点. 我们知道 HDFS 最早是根据 GFS(Google File System)的论文概念模型来设计实现的 ...
- [译]Kinect for Windows SDK开发入门(十八):Kinect Interaction交互控件
本文译自 http://dotneteers.net/blogs/vbandi/archive/2013/03/25/kinect-interactions-with-wpf-part-i-getti ...
- Alljoyn瘦客户端库介绍(官方文档翻译 下)
由于其他事情耽误,这个翻译现在才完成.接上篇—— 4 瘦客户端核心库架构 由于AllJoyn瘦客户端核心库(AJTCL)必须运行在那些功耗受限.计算能力有限.资源紧缺的设备上,因此它无法像运行在通用型 ...