Failed to create eventfd for AtomicNotificationQueue24: Too many open files

提问参考模版:

  • nebula 版本:(3.3.0)
  • 部署方式:分布式
  • 安装方式:源码编译 / Docker / RPM
  • 是否为线上版本: N
  • 硬件信息
    • 磁盘( 推荐使用 SSD)
    • CPU、内存信息
  • storaged无法启动, storaged-stderr.log日志为
terminate called after throwing an instance of 'std::system_error'
  what():  Failed to create eventfd for AtomicNotificationQueue24: Too many open files
ExceptionHandler::GenerateDump sys_pipe failed:Too many open files
ExceptionHandler::WaitForContinueSignal sys_read failed:ExceptionHandler::SendContinueSignalToChild sys_write failed:Bad file descriptor
Bad file descriptor
*** Aborted at 1676011638 (Unix time, try 'date -d @1676011638') ***
*** Signal 6 (SIGABRT) (0x4ffb) received by PID 20475 (pthread TID 0x7f1fb55ff700) (linux TID 20782) (maybe from PID 20475, UID 0) (code: -6), stack trace: ***
(error retrieving stack trace)

nebula-storaged.INFO 日志:

集群中3台服务器 只有这台storaged启动异常,按照论坛的方法 ulimit -n 65536 也是不行

参考下这个呢?顺便看看那个帖子,感觉和你的问题挺类似的。

还是不行


nebula-storaged.conf配置为默认 使用


建议的帖子看了 使用默认配置也不行 ulimit -n 1000000也是执行了

等周一我们研发上班了,我让他们给你看看哈。

ulimit是正确切唯一的方式。

问题应该是出在你用了docker。它应该是不能直接在shell修改ulimit,可以搜一下docker如何修改ulimit,或者参考这个链接

2 个赞

插眼,我之前3.3 版本 RPM安装的 也遇到过,ulimit 调到1000000 开始可以,后续也不行了,被迫删库重建了。

我3.3版本也碰到了这个问题 :joy:

那你试过上面的法子么?

试过ulimit -n 1000000,还是不太行

我没有用docker 直接装在服务器的 RPM方式 这个问题应该不是我一个 评论也有其他人出现了 3.3.0版本问题 不知道其它版本有没有 数据量大的时候出现

看一下你进程到底多少的 limit

pid=$(ps -ef|grep nebula-storaged|awk '{print $2}'|head -1)
grep open /proc/$pid/limits

image

40000 是你设置的值么,然后 lsof 看一下句柄数是多少,如果已经很大了,就设置 ulimit

sudo lsof -p $pid|wc -l
1 个赞

image

image

感谢提供思路 应该是单纯的使用ulimit -n 有时候是不起作用的 只有这样(sudo vi /etc/security/limits.conf )
文件添加配置
root soft nofile 1000000
root hard nofile 1000000
才能永久修改 当前进程的最大文件数量Max open files 类似问题的解决方案可以加上这个 要不然会有人无法解决 目前改完可以启动了 没报错,观察一段时间 看看会不会出问题

1 个赞

你观察下,如果没出问题的话,记得回来勾选你自己的回复为解决方案哈。如果出问题了,记得来更新下帖子。

此话题已在最后回复的 7 天后被自动关闭。不再允许新回复。