最近使用kettle从Mysql数据导入Es中,因为使用分页导入,kettle持续运行导致:KETTLE java.lang.OutOfMemoryError: Java heap space
基本上是让修改kettle安装目录中下的spoon.bat程序,用记事本等程序打开,找到
if "%PENTAHO_DI_JAVA_OPTIONS%"=="" set PENTAHO_DI_JAVA_OPTIONS="-Xmx512m" "-XX:MaxPermSize=256m"
部分,将其调整(一般调整为256的倍数)为:
if "%PENTAHO_DI_JAVA_OPTIONS%"=="" set PENTAHO_DI_JAVA_OPTIONS="-Xmx1024m" "-XX:MaxPermSize=2048m"
然后保存。
-Xms:设置JVM初始内存;
-Xmx:设置JVM最大可用内存;
-XX:MaxPermSize:设置JVM最大允许分配内存,按需分配。
-Xmx必须小于等于系统内存的1/4,最大不要超过3/8,其他两个选项不大于-Xmx。
但是修改完之后,还是报错,持续增加内存并不能根本上解决问题,可以尝试以下方法:
修改kettle安装目录中下的kitchen.sh程序,用记事本等程序打开,找到