最近准备把一千九百多万数据导入Solr中,在以前测试数据只有一两百万,全量导入没有任务问题。但是,换成一千九百万数据时,solr报内存异常(java.lang.OutOfMemoryError:GC overhead limit exceeded),整个tomcat无法使用。我发现,我给tomcat最大堆内存512M。我觉得,可能是内存过小,于是,我把内存改大些,1024M(set JAVA_OPTS=-server -Xms1024m -Xmx1024m -XX:PermSize=128M -XX:MaxPermSize=256M )。结果,还是内存溢出。我想已经不是tomcat内存的问题(当然,如果你的内存足够大,也是可行的)。问题,应该出在solr的dataimporthandler取数据那块。solr除了内存溢出错误,还有其他异常:

Full Import failed:java.lang.RuntimeException: java.lang.RuntimeException: org.apache.solr.handler.dataimport.DataImportHandlerException: Unable to execute query: select * from POI Processing Document # 1

at org.apache.solr.handler.dataimport.DocBuilder.execute(DocBuilder.java:278)

at org.apache.solr.handler.dataimport.DataImporter.doFullImport(DataImporter.java:411)

at org.apache.solr.handler.dataimport.DataImporter.runCmd(DataImporter.java:483)

at org.apache.solr.handler.dataimport.DataImporter$1.run(DataImporter.java:464)

Caused by: java.lang.RuntimeException: org.apache.solr.handler.dataimport.DataImportHandlerException: Unable to execute query: select * from POI Processing Document # 1

at org.apache.solr.handler.dataimport.DocBuilder.buildDocument(DocBuilder.java:418)

at org.apache.solr.handler.dataimport.DocBuilder.doFullDump(DocBuilder.java:331)

at org.apache.solr.handler.dataimport.DocBuilder.execute(DocBuilder.java:239)

... 3 more

Caused by: org.apache.solr.handler.dataimport.DataImportHandlerException: Unable to execute query: select * from POI Processing Document # 1

at org.apache.solr.handler.dataimport.DataImportHandlerException.wrapAndThrow(DataImportHandlerException.java:71)

at org.apache.solr.handler.dataimport.JdbcDataSource$ResultSetIterator.(JdbcDataSource.java:281)

at org.apache.solr.handler.dataimport.JdbcDataSource.getData(JdbcDataSource.java:238)

at org.apache.solr.handler.dataimport.JdbcDataSource.getData(JdbcDataSource.java:42)

at org.apache.solr.handler.dataimport.SqlEntityProcessor.initQuery(SqlEntityProcessor.java:59)

at org.apache.solr.handler.dataimport.SqlEntityProcessor.nextRow(SqlEntityProcessor.java:73)

at org.apache.solr.handler.dataimport.EntityProcessorWrapper.nextRow(EntityProcessorWrapper.java:243)

at org.apache.solr.handler.dataimport.DocBuilder.buildDocument(DocBuilder.java:477)

at org.apache.solr.handler.dataimport.DocBuilder.buildDocument(DocBuilder.java:416)

... 5 more

Caused by: com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: Communications link failure

The last packet successfully received from the server was 395,021 milliseconds ago. The last packet sent successfully to the server was 395,021 milliseconds ago.

at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)

at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:57)

at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)

at java.lang.reflect.Constructor.newInstance(Constructor.java:526)

at com.mysql.jdbc.Util.handleNewInstance(Util.java:406)

at com.mysql.jdbc.SQLError.createCommunicationsException(SQLError.java:1074)

at com.mysql.jdbc.MysqlIO.nextRowFast(MysqlIO.java:1653)

at com.mysql.jdbc.MysqlIO.nextRow(MysqlIO.java:1409)

at com.mysql.jdbc.MysqlIO.readSingleRowSet(MysqlIO.java:2883)

at com.mysql.jdbc.MysqlIO.getResultSet(MysqlIO.java:476)

at com.mysql.jdbc.MysqlIO.readResultsForQueryOrUpdate(MysqlIO.java:2576)

at com.mysql.jdbc.MysqlIO.readAllResults(MysqlIO.java:1757)

at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:2167)

at com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2637)

at com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2566)

at com.mysql.jdbc.StatementImpl.execute(StatementImpl.java:782)

at com.mysql.jdbc.StatementImpl.execute(StatementImpl.java:625)

at org.apache.solr.handler.dataimport.JdbcDataSource$ResultSetIterator.(JdbcDataSource.java:274)

... 12 more

Caused by: java.io.EOFException: Can not read response from server. Expected to read 39 bytes, read 30 bytes before connection was unexpectedly lost.

at com.mysql.jdbc.MysqlIO.readFully(MysqlIO.java:2497)

at com.mysql.jdbc.MysqlIO.nextRowFast(MysqlIO.java:1634)

... 23 more

我搜索了一下Solr的wiki,了解到solr jdbc取数据时,setBatchSize的问题。默认,会把很多数据放到内存中,这也是导致我的内存居高不下,后来导致内存溢出的原因。于是,我修改dataimporthandler配置文件:batchSize="-1" 解决内存溢出

配置文件修改如下:

重启一个solr的core,重新导入,问题解决。

mysql导入 内存溢出_Solr Dataimporthandler 导入MySQL 内存溢出。相关推荐

  1. mysql利用内存表导入数据_Mysql 大量数据导入

    今天试图用heidisql 导入一个150M的数据文件(.sql), 结果报out of memory 错误.在网上搜了很多案例,都没能解决问题.我甚至怀疑是mysql 的default的内存设置的太 ...

  2. 怎么导入mysql示例_MySQL命令行导出导入数据库实例详解

    1,进入MysqL目录下的bin文件夹:cd MysqL中到bin文件夹的目录 如我输入的命令行:cd C:\Program Files\MysqL\MysqL Server 5.5\bin (或者直 ...

  3. mysql 软件导出导入数据_MySQL 之 导出导入数据

    mysqldump -u 用户名 -p 数据库名 > 导出的文件名 mysqldump -u root -p --databases db_name > test_db.sql       ...

  4. tp5大数据批量导入mysql_TP5框架下MySQL通过LOAD DATA INFILE批量导入数据详细操作

    LOAD DATA INFILE 语句用法 参考手册 本文语句参数使用默认值 PHP: TP框架环境// 定义文件路径 $file_path = 'LOAD_DATA_LOCAL_INFILE.txt ...

  5. mysql sql文件太大_MySQL导入的sql脚本文件过大解决方案

    运维同事近日给到我这边一个mysql的备份脚本文件,大小超过2.4G. 于是直接通过Navicat客户端导入脚本,但是报错:MySQL server has gone away. 于是想通过截取文件, ...

  6. perl导入文本至mysql_Perl 脚本实现MySQL 异机导入导出-阿里云开发者社区

    单位的开发同事需要将一个mysql 中的库导入到本地mysql中 所以为了减少手工操作,就写了下面的一个用perl 实现的 mysql 异机导入导出脚本:如下 #!/usr/bin/perl  -w ...

  7. mysql db2免费下载_DB2ToMysql(DB2导入到Mysql工具)下载

    DB2ToMysql是一个高效实用的数据转换工具,帮助帮助数据库用户进行转换DB2数据库数据到MySQL,节省将DB2数据导入MySQL的时间.界面简洁直观,操作简单方便. 基本简介 DB2ToMys ...

  8. mysql语句导出数据库文件_通过Mysql命令行语句来导入、导出数据库文件

    Mysql命令行导出数据库: 1.首先我们通过命令行进入到mysql安装目录的bin目录下,比如我输入的命令行为: cd C:\Program Files\MySQL\MySQL Server 5.5 ...

  9. tp5 excel 导入 mysql_TP5框架下MySQL通过LOAD DATA INFILE批量导入数据详细操作

    LOAD DATA INFILE 语句用法 参考手册 本文语句参数使用默认值 PHP: TP框架环境// 定义文件路径 $file_path = 'LOAD_DATA_LOCAL_INFILE.txt ...

最新文章

  1. object-c中的继承
  2. listview属性_属性提取器:获取ListView即时更新其元素的最佳方法
  3. php管理智能dns,负载均衡之DNS轮询
  4. iOS (封装)一句话调用系统的alertView和alertController
  5. [mysql]三种方法为root账户指定密码
  6. 在java中转义符 n代表什么_在Java中,表示换行符的转义字符是()。 A.\nB.\fC.n D.\ddd...
  7. GameofMir__游戏Mod制作【1】
  8. 谷歌应用程序无法启动,因为应用程序的并行配置不正确的问题解决方案
  9. MTK76X8最新Openwrt固件下载
  10. 从零开始学习CANoe(一)—— 新建工程
  11. 10种经典的日内交易策略模型思路
  12. 文章被推荐到首页,在哪里可以看到?
  13. R语言ggplot2可视化:使用ggpubr包的ggviolin函数可视化小提琴图、使用add_summary函数(设置参数为median_iqr)在可视化图像中添加中位数数据点、IQR线条
  14. MOOS程序解析记录(4)
  15. 微信小程序图片的比例问题
  16. 多重积分matlab
  17. Prompt-Guided Injection of Conformation to Pre-trained Protein Model
  18. 企业邮箱WebMail协助办公功能盘点
  19. java全栈系列之JavaSE-面向对象(方法重写)037
  20. 海康威视java读取摄像头数据

热门文章

  1. 我从构建生产型数据库中学到的42件事
  2. 为什么新一代的Rust、Go等编程语言都如此讨厌if-else、Switch结构
  3. 低代码工具是软件维护的噩梦?
  4. 谁说Python慢来着?不用Python,这个问题难倒了无数的程序员
  5. 导航栏使用引导、下载资源支持试读、CSDN年终重磅福利来袭……
  6. GitHub Universe 2020 强势登陆,GitCode直播已上线
  7. 陆奇:欢迎毛圣博加入奇绩,成为奇绩创坛合伙人
  8. YGC 问题排查,又涨姿势了!
  9. 无代码来了,还要程序员吗?
  10. 漫画 | 如何获得关系数据库王国的永久居住权?