我在双节点(A
和B
)群集上使用了cassandra 0.6.5。
客户端使用Hector
。
运行一段时间后,一个节点A
始终有too many open files exception
我在节点上运行netstat
它显示了很多CLOSE_WAIT
tcp连接。
这是例外的罪魁祸首
然而,导致如此多CLOSE_WAIT
个连接的原因是什么
是客户端问题Hector
吗?
为什么其他节点B
没有这个问题?
答案 0 :(得分:5)
请尝试使用lsof -n | grep java
,而不是使用netstat。那里列出了多少个文件描述符(您可以使用lsof -n | grep java | wc -l
进行计数)?
The datastax docs suggest you might be hitting a default file descriptor limit of 1024。您可以通过ulimit或/etc/security/limits.conf更改它。 Datastax建议进行以下更改:
echo "* soft nofile 32768" | sudo tee -a /etc/security/limits.conf
echo "* hard nofile 32768" | sudo tee -a /etc/security/limits.conf
echo "root soft nofile 32768" | sudo tee -a /etc/security/limits.conf
echo "root hard nofile 32768" | sudo tee -a /etc/security/limits.conf
debian包设置以下值:
# Provided by the cassandra package
cassandra - memlock unlimited
cassandra - nofile 100000
我还强烈建议您升级到更新版本的Cassandra。