我得到以下异常在我的卡桑德拉SYSTEM.LOG:卡桑德拉WriteTimeoutException例外 - 节点死亡最终
WARN [CounterMutationStage-25] 2017-07-25 13:25:35,874 AbstractLocalAwareExecutorService.java:169 - Uncaught exception on thread Thread[CounterMutationStage-25,5,main]: {}
java.lang.RuntimeException: org.apache.cassandra.exceptions.WriteTimeoutException: Operation timed out - received only 0 responses.
at org.apache.cassandra.service.StorageProxy$DroppableRunnable.run(StorageProxy.java:2490) ~[apache-cassandra-3.9.jar:3.9]
at java.util.concurrent.Executors$RunnableAdapter.call(Unknown Source) ~[na:1.8.0_112]
at org.apache.cassandra.concurrent.AbstractLocalAwareExecutorService$FutureTask.run(AbstractLocalAwareExecutorService.java:164) ~[apache-cassandra-3.9.jar:3.9]
at org.apache.cassandra.concurrent.AbstractLocalAwareExecutorService$LocalSessionFutureTask.run(AbstractLocalAwareExecutorService.java:136) [apache-cassandra-3.9.jar:3.9]
at org.apache.cassandra.concurrent.SEPWorker.run(SEPWorker.java:109) [apache-cassandra-3.9.jar:3.9]
at java.lang.Thread.run(Unknown Source) [na:1.8.0_112]
Caused by: org.apache.cassandra.exceptions.WriteTimeoutException: Operation timed out - received only 0 responses.
at org.apache.cassandra.db.CounterMutation.grabCounterLocks(CounterMutation.java:150) ~[apache-cassandra-3.9.jar:3.9]
at org.apache.cassandra.db.CounterMutation.applyCounterMutation(CounterMutation.java:122) ~[apache-cassandra-3.9.jar:3.9]
at org.apache.cassandra.service.StorageProxy$9.runMayThrow(StorageProxy.java:1473) ~[apache-cassandra-3.9.jar:3.9]
at org.apache.cassandra.service.StorageProxy$DroppableRunnable.run(StorageProxy.java:2486) ~[apache-cassandra-3.9.jar:3.9]
... 5 common frames omitted
一旦发生这种情况,CPU下降到0%,持续一分钟左右,节点变得没有反应,但在那之后恢复。但最终,节点将完全死亡(即进程继续运行,但不再响应命令,即使关机不起作用,也不得不终止进程)。
一些更多的信息:
- 卡桑德拉3.9
- G1垃圾收集 在Windows Server
- 单节点2012 R2(20个内核,256 GB RAM)
- 使用大量的柜台和柜台突变
我试过的东西:
- 从日志中删除所有其他警告。用于对计数器批次的警告过大,重新编写代码以根本不使用批处理。这消除了警告,但不是例外问题。
- 迁移到一个更大的机器,使用更大的堆和微调GC来确保问题不是机器压力过大。 CPU负载是< 20%。
有没有人有一个想法还有什么要做?我主要关心的是节点完全死亡。我不知道,这个异常是造成它,但它是我唯一的线索......
更新1:
更新卡桑德拉3.11和节点似乎没有现在不行了了。然而,写入超时仍然存在,节点在几分钟内无响应,但至少现在恢复。
更新2:
问题解决了(用专业顾问的帮助下)。我们节点上的光盘I/O速度非常糟糕,导致冲洗作家队列不断增加。原因未知,驱动器上的I/O速度测试(Raid 1 SSD)实际上超级棒。 将节点从Windows移到Linux(并根据http://docs.datastax.com/en/landing_page/doc/landing_page/recommendedSettings.html对其进行配置)解决了此问题。
问题的真正原因不明;可能本身就是Windows,或者只是与RAID设置有些不兼容。无论如何,Cassandra只能在Linux上进行真正的测试,并且更容易为Linux设置寻求帮助。学过的知识。
我会接受这个答案,因为问题实际上是光盘I/O,并且您的建议非常正确,即使它没有解决我们的具体问题。 – MadDave666