2

我有一个安装了 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.Tasks.TaskHelper.WaitToComplete(Task task, Int32 timeout) at Cassandra.Tasks.TaskHelper.WaitToComplete[T] (任务``1 任务,Int32 超时)在 Cassandra.ControlConnection.Init() 在 Cassandra.Cluster.Init()`

但是当我检查 OpsCenter 时,没有一个节点处于关闭状态。所有节点状态都显示得很好。这可能是驱动程序的问题吗?早些时候我使用的是从 nuget 安装的 Cassandra C# 驱动程序版本 2.5.0,但现在我将其更新到版本 3.0.3 仍然存在此错误。

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

4

1 回答 1

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数据包关闭连接。

于 2016-07-19T15:18:54.030 回答