zoukankan      html  css  js  c++  java
  • mongodb导入数据变得很慢,解决办法

    学习mongodb过程中遇到了一个棘手的问题,向mongos中导入大约1G的数据,变得越来越慢,甚至进度条一直不走了(之前也插入过1G数据,没遇到这种情况)。自己摸索了好久,终于解决。解决方法,与大家分享

    一直停着不动
    开始我以为是不是数据处理的时候出了问题,然后我又将需要导入的数据重新预处理,之后操作,还是不行,也是上述情况。
    之后我又以为是mongodb集群崩了,重新搭建复制集+分片,再导入数据,还是上述问题。
    那既然不是mongodb的问题,数据的问题,那就是linux的问题了。

    查看了mongos.log(哈哈,后来才想到查看日志)

    [ShardRegistry] Ending idle connection to host 192.168.xxx.xxx:21000 because the pool meets constraints; 1 connections to that host remain open

    Google一下,大概是和什么“ 连接数 ” 有关

    查看了一下mongos.conf,是有一个这么玩意,但是我设置了呀

    #设置最大连接数
    maxConns=20000

    再连接mongos,查看最大连接数

    mongos> db.serverStatus().connections		//查询最大连接数
    { "current" : 1, "available" : 818, "totalCreated" : NumberLong(1) 
    

    有问题 ,当前mongodb最大连接数=current数值+available数值,这才819,与我设置的20000,相差甚远。后来晚上搜索一番,其实是于Linux默认进程能打开最大文件数有关

    修改
    第一步 编辑 /etc/security/limits.conf ,加入以下两行

    * soft nofile 65535      //应该大于上述最大连接数20000就可以
    * hard nofile 65535

    这里 * 表示所有用户, 但有的linux系统不认, 需要具体的用户名, 比如:

    root soft nofile 65535
    root hard nofile 65535

    第二步 编辑 etc/pam.d/login , 确保有如下行:

    session required pam_limits.so

    第三步 修改系统总限制
    修改 /etc/sysctl.conf, 加入

    fs.file-max = 6553560

    最后我重启使配置生效

    再次连接mongos

    mongos> db.serverStatus().connections
    { "current" : 1, "available" : 19999, "totalCreated" : 3, "active" : 1 }
    //最大连接数正好两万

    后来又执行mongoimport导入数据,顺利导入,还挺快
    导入1G数据大约耗时十多分钟
    这是我的解决方法,大家可以参考一下

    本文转载于:https://blog.csdn.net/qq_40724463/article/details/92381684

  • 相关阅读:
    常用模板
    pascal 的字符串操作
    war2 洛谷模拟赛day2 t3 状压
    状压搜索 洛谷T47092 作业
    Milking Order
    洛谷九月月赛T1 思考
    C数列下标 牛客OI赛制测试赛2
    钓鱼 洛谷p1717
    机房人民大团结(DP)
    Spark的Straggler深入学习(2):思考Block和Partition的划分问题——以论文为参考
  • 原文地址:https://www.cnblogs.com/drunkPullBreeze/p/13739169.html
Copyright © 2011-2022 走看看