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

时间:2018-01-24 14:16:17

标签: cassandra datastax datastax-enterprise opscenter datastax-startup

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

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 个答案:

答案 0 :(得分: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也不例外。