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、函数、脚本文件或可运行程序的名称