DSE 无法运行程序 df - 打开的文件太多

Posted

技术标签:

【中文标题】DSE 无法运行程序 df - 打开的文件太多【英文标题】:DSE Cannot run program df - Too many open files 【发布时间】:2018-07-03 14:57:22 【问题描述】:

我们的代理停止工作,恢复它的唯一方法是在每个节点中重新启动代理,我们得到的错误:

ERROR [clojure-agent-send-off-pool-11618] df failed on execute;
returning default value - Cannot run program "df": error=24, Too many open files

为什么需要打开这么多文件?我们如何在不需要重新启动代理的情况下重置它并使其自动生成。

【问题讨论】:

【参考方案1】:

根据DSE documentation on production settings,确保您已对 /etc/security/limits.d/cassandra.conf 文件进行以下调整:

cassandra - memlock unlimited
cassandra - nofile 100000
cassandra - nproc 32768
cassandra - as unlimited

注意:这里假设您以 cassandra 用户身份运行 Cassandra。如果不是这种情况,请进行相应调整。

为什么需要打开这么多文件?

Cassandra 最终将其数据写入底层文件系统上的 SSTable 文件。它还必须为上述任何文件的读取提供服务。此外,如果您的行已被大量更新,因此随着时间的推移包含过时的数据(并且压缩尚未运行),则完全有可能需要从多个文件中读取单行。

简而言之,数据库需要同时处理多个文件,Cassandra 也不例外。

【讨论】:

以上是关于DSE 无法运行程序 df - 打开的文件太多的主要内容,如果未能解决你的问题,请参考以下文章

无法打开链接描述文件 libgcc_s.so.1:打开的文件太多

Apache PHP/OSX Mavericks: - 无法打开流:打开的文件太多

Windows Powershell无法运行,无法将“python”项识别为 cmdlet、函数、脚本文件或可运行程序的名称

无法打开设备:打开的文件太多错误

DSE:激活 OLAP

台式电脑系统资源不足无法打开API,怎么办