我正在开发一个 spring boot
从远程获取数据的api mysql
数据库表。此表每天包含300k-400k数据。我们需要将这些数据迁移到 mongoDB
现在。我试过了 GridFS
收集的存储技术 json
文件到 mongoDB
. 我能在本地机器上找到这个。但是当我在live服务器上尝试这个场景时 JVM
抛出错误:
2018-12-18 17:59:26.206 ERROR 4780 --- [r.BlockPoller-1] o.a.tomcat.util.net.NioBlockingSelector :
java.lang.OutOfMemoryError: GC overhead limit exceeded
at java.util.ArrayList.iterator(ArrayList.java:840) ~[na:1.8.0_181]
at sun.nio.ch.WindowsSelectorImpl.updateSelectedKeys(WindowsSelectorImpl.java:496) ~[na:1.8.0_181]
at sun.nio.ch.WindowsSelectorImpl.doSelect(WindowsSelectorImpl.java:172) ~[na:1.8.0_181]
at sun.nio.ch.SelectorImpl.lockAndDoSelect(SelectorImpl.java:86) ~[na:1.8.0_181]
at sun.nio.ch.SelectorImpl.select(SelectorImpl.java:97) ~[na:1.8.0_181]
at org.apache.tomcat.util.net.NioBlockingSelector$BlockPoller.run(NioBlockingSelector.java:339) ~[tomcat-embed-core-8.5.14.jar:8.5.14]
2018-12-18 17:59:27.865 ERROR 4780 --- [nio-8083-exec-1] o.a.c.c.C.[.[.[.[dispatcherServlet] : Servlet.service() for servlet [dispatcherServlet] in context with path [/datapuller/v1] threw exception [Handler dispatch failed; nested exception is java.lang.OutOfMemoryError: GC overhead limit exceeded] with root cause
java.lang.OutOfMemoryError: GC overhead limit exceeded
我试着用 -Xmx3048m
通过打开 java
来自控制面板的实用程序。。但结果是一样的。我下一步应该怎么做来解决这个问题。我没有在这里张贴代码,因为我希望它是所有的罚款,因为它是运行在本地机器上的60k至70k记录数据正常。
1条答案
按热度按时间yqkkidmi1#
最有效的方法总是绕过所有这些抽象。
因为您没有被锁定到sprint引导,所以我建议您将数据作为csv从mysql转储,或者通过mysqldump,或者
然后您可以将这个csv导入mongodb。
https://docs.mongodb.com/manual/reference/program/mongoimport/