我遇到问题,Cassandra 1.2.5节点进入高CPU使用率2300%并且随机变得无响应(例如无法登录到cqlsh,导致timout异常)。
我不确定为什么但是在该节点上运行tpstats时,我有26000个待处理的ReadStage池和FlushWriter 126一直被阻止。似乎在重新启动节点之后,事情会恢复正常一段时间,一段时间之后问题再次出现,我会在整个地方获得超时,并且无法从未受部署影响的表中正确检索数据。
我在问题识别之前已经对应用程序进行了部署修改,其中我引入了接收大量写入的表,并且在读取数据之后将其删除。我想知道这个问题是否由于压缩可以帮助任何人?
答案 0 :(得分:1)
如果FlushWriter(永远)阻止这是一个非常糟糕的迹象。通常表示您尝试使用硬件做的远远超过您的容量。如果我做出一个疯狂的猜测:你的CPU被GC咀嚼了,这就是所有东西。
单独26000个待处理的读取可能足以让你的堆崩溃。很难从你的描述中说出问题是什么,但我怀疑你的IO子系统是否过载导致读取备份(这是你的问题开始的地方)。那些读取请求最终在堆上并坐在那里直到请求超时。您的待处理读取会炸毁您的堆,并最终导致GC死亡螺旋。
如果这是您的问题:使用更多节点添加容量,或使用SSD。