我有运行Node app的弹性beanstalk。 Node app将数据发送到通过cloudformation构建的3台Mongo服务器。一切都很好,直到我在数据库中达到几百万个条目,然后突然我开始得到503错误。
日志从节点应用程序显示:
[MongoError: exception: socket exception [CONNECT_ERROR] for s2-rs9/XXXXXX:27027]
name: 'MongoError',
message: 'exception: socket exception [CONNECT_ERROR] for s2-rs9/XXXXXX:27027',
sharded: false,
primary: 's2-rs9',
code: 11002,
ok: 0,
errmsg: 'exception: socket exception [CONNECT_ERROR] for s2-rs9/XXXXXX:27027' }
有什么想法吗?
答案 0 :(得分:0)
您需要做的就是为数据库启用分片,错误消息中的分片为false。如果查询增加,则必须启用分片以平衡增加的查询数。
您可以使用sh.enableSharding(database)
要查看用于分片的命令,您可以执行sh.help()
,这将输出您的命令列表及其说明。在那里你可以找到这个enableSharding。
另外请记住,在进行分片之前,你需要在myKey上使用indeces(否则你会收到一些关于indeces的错误)。因此,如果您还没有这样做 - 请先使用db.collection.ensureIndex(myKey)