Cassandra Nodes走下坡路

时间:2016-04-07 11:17:29

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

我安装了Solr的3节点Cassandra集群设置(复制设置为2),每个节点都有RHEL,32 GB Ram,1 TB HDD和DSE 4.8.3。我的节点上发生了很多写操作,我的Web应用程序也从我的节点读取。

  1. 我观察到所有节点每3-4天就会关闭一次。我必须重新启动每个节点,然后它们运行良好,直到接下来的3-4天再次出现同样的问题。我检查了服务器日志,但即使服务器出现故障也没有显示任何错误。我无法弄清楚为什么会这样。
  2. 在我的应用程序中,有时当我通过C#Cassandra驱动程序连接到节点时,我收到以下错误
      

    Cassandra.NoHostAvailableException:在Cassandra的Cassandra.Tasks.TaskHelper.WaitToComplete(任务任务,Int32超时)中,没有可用于查询的主机(尝试:' node-ip':9042)。在Cassandra.Cluster.Init()的Cassandra.ControlConnection.Init()中的Tasks.TaskHelper.WaitToComplete [T](任务``1任务,Int32超时)

  3. 但是当我检查OpsCenter时,没有一个节点关闭。所有节点状态显示完全正常。这可能是司机的问题吗?之前我使用的是从nuget安装的Cassandra C#驱动程序版本2.5.0,但现在我甚至更新到版本3.0.3仍然存在这个错误。

    对此有任何帮助将不胜感激。提前谢谢。

1 个答案:

答案 0 :(得分:0)

如果您还没有这样做,您可能希望通过在所有节点上运行nodetool -h 192.168.XXX.XXX setlogginglevel org.apache.cassandra DEBUG来查看将日志记录级别设置为默认值

您的第一个问题很可能是OutOfMemory异常。

对于您的第二个问题,问题很可能是您有非常长的GC暂停。拖尾/var/log/cassandra/debug.log/var/log/cassandra/system.log可能会给您提示,但除非您仔细查看时间戳,否则通常不会显示问题。解决此问题的最佳方法是确保在jvm.options配置中启用了GC日志记录,然后在记录暂停时间时关闭gc日志:

grep 'Total time for which application threads were stopped:' /var/log/cassandra/gc.log.1 | less

Unexpected exception during request; channel = [....] java.io.IOException: Error while read (....): Connection reset by peer错误通常是节点间超时。即,协调器超时等待来自另一个节点的响应,并发送TCP RST数据包以关闭连接。

相关问题