我们使用node.js()和mongo分片开发了聊天模块,并且已经上线到生产服务器。但是今天它在mongodb中达到20000连接并且在日志中收到错误“Too many connections”。之后我们重新启动了节点服务器并重新启动。现在它正常了。但我们必须知道如何立即解决这个问题。
如果没有使用,可以在mongodb中设置任何配置来终止连接,或者在建立连接时设置过期时间。
请帮助我们解决此问题。
此致 库马兰
答案 0 :(得分:2)
您可能没有遇到MongoDB问题。您可以对MongoDB建立的连接数量上限,通常大致等于可用的最大文件描述符数。
听起来你的代码中存在一个错误(可能)或mongoose(不太可能),它会创建比关闭更多的连接,或者从不关闭连接。在Java中,例如为每个查询创建一个新的“Mongo”类实例会导致这类问题,但我不使用node.js / mongoose,所以我不知道JS的等价物是什么。
密切关注mongostat并检查连接数是否总是增加或有时是否减少。如果是前者,您的代码永远不会因任何原因释放连接。如果是后者,则只需创建它们,而不是空闲连接断开连接。这通常是因为为每个查询做了一些重量级的事情(比如驱动程序初始化它的连接池),而不是一次。