美文网首页我爱编程
mongodb 杀掉索引进程

mongodb 杀掉索引进程

作者: DimonHo | 来源:发表于2018-05-28 10:10 被阅读29次

在MongoDB上建索引可能会对MongoDB集群对可用性产生负面影响。在生产服务上,如果针对一个大集合触发建立索引,且在前台运行,你可能会发现,在索引建完之前,整个集群都无响应。在一个大集合上,这个过程可能会持续几个小时,甚至几天。一旦你触发一个索引,简单的重启服务并不能解决这个问题,因为MongoDB会继续重启前的建索引的工作。如果之前你运行后台建索引任务,在服务重启后它会变成前台运行的任务。在这种情况下,重启会让问题变得更糟糕。

解决办法:使用db.currentOp()定位建索引进程,然后使用db.killOp(<opid>)杀掉进程:

db.currentOp();
{
            "host" : "server-053.localdomain:27017", 
            "desc" : "conn", 
            "threadId" : "140264163313408", 
            "connectionId" : 946.0, 
            "client" : "192.168.1.93:49372", 
            "clientMetadata" : {
                "driver" : {
                    "name" : "mongo-java-driver", 
                    "version" : "3T_5.1.1-478-gfd17fbf"
                }, 
                "os" : {
                    "type" : "Windows", 
                    "name" : "Windows 7", 
                    "architecture" : "amd64", 
                    "version" : "6.1"
                }, 
                "platform" : "Java/Oracle Corporation/1.8.0_131-b11"
            }, 
            "active" : true, 
            "currentOpTime" : "2018-05-28T09:52:40.567+0800", 
            "opid" : 1420164.0, 
            "secs_running" : NumberLong(679), 
            "microsecs_running" : NumberLong(679091899), 
            "op" : "command", 
            "ns" : "data_test.$cmd", 
            "command" : {
                "createIndexes" : "achievement", 
                "indexes" : [
                    {
                        "key" : {
                            "record.documents.0.docTitle" : 1.0
                        }, 
                        "name" : "record.documents.0.docTitle_1", 
                        "ns" : "data_test.achievement"
                    }
                ], 
                "$db" : "data_test"
            }, 
            "msg" : "Index Build Index Build: 469019/78412152 0%", 
            "progress" : {
                "done" : 469019.0, 
                "total" : 78412152.0
            }, 
            "numYields" : 0.0, 
            "locks" : {
                "Global" : "w", 
                "Database" : "W", 
                "Collection" : "w"
            }, 
            "waitingForLock" : false, 
            "lockStats" : {
                "Global" : {
                    "acquireCount" : {
                        "r" : NumberLong(1), 
                        "w" : NumberLong(1)
                    }
                }, 
                "Database" : {
                    "acquireCount" : {
                        "W" : NumberLong(1)
                    }, 
                    "acquireWaitCount" : {
                        "W" : NumberLong(1)
                    }, 
                    "timeAcquiringMicros" : {
                        "W" : NumberLong(1336357)
                    }
                }, 
                "Collection" : {
                    "acquireCount" : {
                        "w" : NumberLong(1)
                    }
                }
            }
        }
db.killOp(1420164);

让索引在后台创建,添加{background:true}参数:

db.works.createIndex({a:1,b:1},{background:true})

相关文章

  • mongodb 杀掉索引进程

    在MongoDB上建索引可能会对MongoDB集群对可用性产生负面影响。在生产服务上,如果针对一个大集合触发建立索...

  • linux常用命令

    进程 查看进程 查看进程占用端口 杀掉进程 window系统杀掉一个进程 文件 文件上传 创建目录 查看文件内容 ...

  • 查看端口占用

    查看端口占用 进程ID为:4231 查看进程的详细信息 杀掉进程 强制杀掉编号为4231的进程

  • 24.Mongodb的索引操作

    Mongodb的索引操作 学习目标 掌握 mongodb索引的创建,删除操作 掌握 mongodb查看索引的方法 ...

  • MongoDB索引二(九)

    MongoDB索引二(九) 接上篇MongoDB索引一

  • MongoDB学习报告(二)

    概述 MongoDB索引管理MongoDB查询优化 MongoDB索引管理 单键索引中的每一项都应该对应被索引文档...

  • Mac关闭gunicorn进程

    查看当前活跃的gunicorn进程 杀掉对应进程

  • MongoDB 索引 --- 2022-04-03

    本章介绍MongoDB索引,类似MYSQL,MongoDB也支持索引,区别是MongoDB支持对JSON结构的任意...

  • linux命令

    查询进程并杀掉进程 查看路由 添加路由

  • Linux 重启nginx服务

    使用先杀掉进程再启动 查询进程 杀死进程 启动nginx

网友评论

    本文标题:mongodb 杀掉索引进程

    本文链接:https://www.haomeiwen.com/subject/rrpwjftx.html