我对Cassandra很新,我想在一个节点上测试它,一旦我在CentOS服务器上构建它就会打开数十万个文件。当我运行lsof | grep java | wc -l
时,我得到超过140000,如果我启动客户端连接并运行查询,描述符的数量会上升,最多可达近一百万,此时服务器会停止。我尝试使用nodetool
和sstablescrub
清理SSTables,我尝试删除/var/lib/cassandra/data/
中的数据,但是一旦构建Cassandra节点,我仍然会打开超过50000个文件描述符。我在lsof
结果中注意到我只有一个进程ID(PID),但我有数百个进程组ID(PGID)。这是预期的吗?它与节点数有关吗?每个进程组的文件描述符都是相同的。以下是数据如何重复的一小部分示例:
java 20595 20654 root 198u a_inode 0,9 0 6999 [eventpoll]
java 20595 20654 root 199u a_inode 0,9 0 6999 [eventfd]
...
java 20595 20655 root 198u a_inode 0,9 0 6999 [eventpoll]
java 20595 20655 root 199u a_inode 0,9 0 6999 [eventfd]
...
java 20595 20656 root 198u a_inode 0,9 0 6999 [eventpoll]
java 20595 20656 root 199u a_inode 0,9 0 6999 [eventfd]
.... and so on.
还有其他文件描述符,如:
java 20595 20655 root mem REG 253,1 32296 201350741 /usr/lib64/libffi.so.6.0.1
也出现了很多次。
安装是否损坏或Cassandra配置错误?
我在这里阅读了DataStax的文档:Json.NET
,
我已经阅读了几乎所有类似的问题,因为它似乎是一个相当普遍的问题,但我不认为在任何地方都提出了完全相同的问题。