原语#primSocketSendDone:套接字失败

primitive #primSocketSendDone: in Socket failed

我正在使用 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 进程。

有人知道这里出了什么问题吗?为什么?

干杯,

某处曾经有 1024 个套接字限制 somewhere。虚拟机列表可能是最好的询问地点

通过修改我的客户端代码以降低存储更多数据的频率(即在内存中缓存更多数据)解决了这个问题,问题消失了,现在我什至可以 运行 并行处理 16 个 Pharo 实例。