docker部署, 然后用Flink导入Nebula出现/var/lib/docker/overlay2目录暴增, 并伴随着storage服务的挂掉重启, 报错: Too many open files

接上这个帖子 使用Flink导入Nebula速度变慢问题(重点) and 日志中的时间少8小时 - #43,来自 yangmeng

使用Flink导入Nebula, 但是发现导入没多久就会出现/var/lib/docker/overlay2目录暴增, 并伴随着服务的挂掉重启, 导致导入报错, 重启不能解决

重新启动后开始导入数据的话, 结果:
image

@darionyaphet 麻烦帮忙看下呗

我现在找到了昨天storage挂了的日志了, @Shylock-Hg @nicole @wey

但是我配置的这个ulimit有问题吗? 你们官网建议的是13W, 我配置的是100W, 难道是哪个ulimit -c的原因吗? 我们之前已经导入了100亿数据了, 就只这样的配置导入的, 这次和之前导入的代码唯一的区别就是.setBatch(800)这个的值, 之前是800一批, 这次是1000一批
image

1 个赞

你直接吧数据存容器里了?

什么意思??? 我是挂的数据卷到宿主机了

看一下/var/lib/docker/overlay2里面什么东西在增加

因为我现在没有导入数据, 没有重现, 反正就是这个目录下的摸一个文件夹, 这个需要怎么看吗? 我现在非常确定是由于这个"Too many open files "原因导致的, 我精确的找到时间日志

这就是因为进程打开了文件句柄,但未能正确关闭,导致文件大量使用,直至最终耗尽。看下文件是不是没有close 吧

1 个赞

这个wal目录下的日志文件不都是自动4个小时后删除的吗? 而且在导入的时候也不是人为的控制它的打开关闭

会不会和容器有关系 这个我其实不太确定

问题, 我算是已经完全理清了, 昨天是导入时候的wal日志文件打开太多报错, (今天凌晨1点是自动清理wal日志文件的时候又打开太多, 也导致其中2台storage节点挂了) 这个还不是自动清理wal时候报错的, 还是 导入数据报错的, 我刚刚看到了我们有凌晨1点的定时任务写入数据

疑问: 我能手动把wal下的日志全部删除吗?

image

我就是简单的用你们官网的例子代码入库的, 其实最核心的和nebula最终交互是你们写的

WAL 的日志很多嘛?如果写完了 可以手动清一下吧

不多了, 因为已经一晚上没有导入数据了, wal下的文件大多都自动clean了, 剩的这些删不删有啥影响吗? 最重要是能不能删除呢???

后续: 我改了wal名字, 启动
image

应该可以删 这些是打开的文件句柄么?

从日志上看是这些wal文件被打开报错的

因为打开的句柄太多了 所以再打开新的文件就报错了

这个机器是 nebula 独享的吗?还是和其他服务混合部署的?

没问题, 从这个帖子的最开始就已经清楚这个问题

是单独享受754G 内存, 88core, 20T磁盘,

你先看下各个进程使用的句柄数量,另外我搜了下/var/lib/docker/overlay2,有很多类似的情况,看起来和docker有关,比如这个

1句柄等下复现了看哈,
2 对你说的没错, 是很多这种类似情况: 比如: docker的/var/lib/docker/overlay文件夹突然占满了硬盘 - wswang - 博客园
但是都不是最后清理容器的事, 最终是要解决为啥容器会挂掉的问题, 说白了只要容器正常不挂,也就不会出现这个overlay2饱满的情况, 还是要解决句柄问题