到目前为止我们已经跑了4个月了,但是最近我看到很多了
SocketException handling request, closing client connection: 9001 socket exception [2] server [127.0.0.1:58996]
我怎么知道这个错误的原因? 它与代码问题或pipe理员configuration有关吗?
我们有Fedora 16服务器,mongo版本2.0.7
首先,看一看,并按照这里列出的步骤:
接下来,查看目标主机上的任何ulimit问题(新套接字需要新的文件描述符,并可能导致错误):
http://www.mongodb.org/display/DOCS/Too+Many+Open+Files
最后,还有一些问题涉及空闲连接的使用时,他们不应该,也可以造成这种types的问题:
https://jira.mongodb.org/browse/SERVER-5793
在SERVER-5632完成之前,这里唯一的补救措施是通过重新启动mongod / mongos进程来刷新连接。
我通过在我的游标查询中添加一个batchSize选项arg来阻止这种情况的发生
例如之前:
var cursor = db.collection('images').find( {}, {"_id": 1} ).sort({"_id": 1});
后:
var cursor = db.collection('images').find( {}, {"_id": 1} ).sort({"_id": 1}).batchSize(1000);
这使得它运行更平滑(没有更多的启动/停止),并且使用更less的恶意消息。 事实上没有。