我们正在运行一个包含大量数据的3节点replSet,目前有超过1500个数据文件。
重新启动MongoDB实例时,我们现在遇到以下问题:
Thu May 30 12:11:20.326 [initandlisten] create collection local.startup_log { create: "startup_log", size: 10485760, capped: true }
Thu May 30 12:11:20.326 [initandlisten] command local.$cmd command: { create: "startup_log", size: 10485760, capped: true } ntoreturn:1 keyUpdates:0 reslen:75 543ms
Thu May 30 12:11:20.326 [initandlisten] info PageFaultRetryableSection will not yield, already locked upon reaching
Thu May 30 12:11:20.326 [initandlisten] insert local.startup_log ninserted:1 keyUpdates:0 0ms
Thu May 30 12:11:20.326 [initandlisten] fd limit hard:550000 soft:550000 max conn: 440000
Thu May 30 12:11:20.326 [initandlisten] ERROR: socket 1203 is higher than 1023; not supported
Thu May 30 12:11:20.326 [initandlisten] now exiting
Thu May 30 12:11:20.326 dbexit:
经过大量的谷歌搜索,看起来它与FD_SETSIZE限制为1024有关。但是ulimit -n设置为550000,正如你在日志中看到的那样。
我无法重新启动实例...有人可能会对我提示吗?
谢谢,奥利弗
答案 0 :(得分:0)
此错误消息的源代码如下:
https://github.com/mongodb/mongo/blob/v2.4.1/src/mongo/util/net/listen.cpp#L205
这里将文件描述符与FD_SETSIZE进行比较,FD_SETSIZE在头文件中定义为1024.我认为如何通过配置任何东西(操作系统,ulimits ......)来改变这个值是不容易的。
您使用的是最新的MongoDB版本吗?查看MongoDB问题,通过在启动时不打开所有文件来降低已使用文件描述符的数量有一些变化 - 请参阅Joachim Isaksson评论中的链接。
答案 1 :(得分:0)
我们正在调试此问题:https://jira.mongodb.org/browse/SERVER-9818并计划在下一版本中修复ASAP。