【发布时间】:2015-01-05 14:13:52
【问题描述】:
我正在使用 Mongotalk 和 Pharo 进行大量分析。
对于每次分析,我都会使用相同的图像运行一个新的 Pharo 实例,并且一切正常,直到在随机点,我得到一个 PrimitiveFailed,如下所示:
^[[31mPrimitiveFailed: primitive #primSocketSendDone: in Socket failed
^[[0mSocket(Object)>>primitiveFailed:
Socket(Object)>>primitiveFailed
Socket>>primSocketSendDone:
Socket>>waitForSendDoneFor:
Socket>>sendSomeData:startIndex:count:for:
Socket>>sendSomeData:startIndex:count:
Socket>>sendData:count:
SocketStream>>flush in Block: [ socket sendData: outBuffer count: outNextToWrite...etc...
BlockClosure>>on:do:
SocketStream>>flush
LittleEndianStream>>flush
InsertOperation(MongoOperation)>>flush
InsertOperation(MongoOperation)>>write
Mongo>>insert:collection:
MongoDatabase>>insert:collection:
MongoCollection>>insert:
MongoCollection>>add:
MyClass>>methodThatCallsAddOnMongoCollection
之后,即使我为每个分析运行一个新的 Pharo 进程,我的所有分析都失败了。
有人知道这里出了什么问题,为什么?
干杯,
【问题讨论】:
-
你在谈论多少个分析,你是在并行运行它们吗?
-
在哪个平台上?
-
如果您在 *nix 系统上,您可能希望使用
ulimit -n检查打开文件的最大数量以及当前打开的文件数量(例如lsof | wc -l)。 -
在 Linux 上按顺序运行,所以我怀疑打开的文件或连接太多,但我会调查一下
-
您是从 shell 脚本启动它们吗?然后你应该检查你的 mongodb 连接设置