Cassandra CPU负载(太多)

Cassandra CPU负载(太多),cassandra,bigdata,cql,cassandra-2.0,Cassandra,Bigdata,Cql,Cassandra 2.0,使用top 8260 root 20 0 5163m 4.7g **133m** S 144.6 30.5 2496:46 java 大部分时间%CPU大于170 我正试图找出问题所在。我认为GC或法拉盛是罪魁祸首 S0 S1 E O P YGC YGCT FGC FGCT GCT LGCC GCC 0.00 16.73 74.74 29.33 59.91

使用
top

8260 root      20   0 5163m 4.7g **133m** S 144.6 30.5   2496:46 java
大部分时间%CPU大于170

我正试图找出问题所在。我认为GC或法拉盛是罪魁祸首

 S0     S1     E      O      P     YGC     YGCT    FGC    FGCT     GCT    LGCC                 GCC 
0.00  16.73  74.74  29.33  59.91  27819  407.186   206   10.729  417.914 Allocation Failure   No GC     
0.00  16.73  99.57  29.33  59.91  27820  407.186   206   10.729  417.914 Allocation Failure   Allocation Failure
同样来自Cassandra日志,它说用相同的段ID和memtable重放位置太频繁了

INFO  [SlabPoolCleaner] 2015-01-20 13:55:48,515 ColumnFamilyStore.java:840 - Enqueuing flush of bid_list: 112838010 (11%) on-heap, 0 (0%) off-heap
INFO  [MemtableFlushWriter:1587] 2015-01-20 13:55:48,516 Memtable.java:325 - Writing Memtable-bid_list@2003093066(23761503 serialized bytes, 211002 ops, 11%/0% of on/off-heap limit)
INFO  [MemtableFlushWriter:1587] 2015-01-20 13:55:49,251 Memtable.java:364 - Completed flushing /root/Cassandra/apache-cassandra-2.1.2/bin/./../data/data/bigdspace/bid_list-27b59f109fa211e498559b0947587867/bigdspace-bid_list-ka-3965-Data.db (4144688 bytes) for commitlog position ReplayPosition(segmentId=1421647511710, position=25289038)
INFO  [SlabPoolCleaner] 2015-01-20 13:56:23,429 ColumnFamilyStore.java:840 - Enqueuing flush of bid_list: 104056985 (10%) on-heap, 0 (0%) off-heap
INFO  [MemtableFlushWriter:1589] 2015-01-20 13:56:23,429 Memtable.java:325 - Writing Memtable-bid_list@1124683519(21909522 serialized bytes, 194778 ops, 10%/0% of on/off-heap limit)
INFO  [MemtableFlushWriter:1589] 2015-01-20 13:56:24,130 Memtable.java:364 - Completed flushing /root/Cassandra/apache-cassandra-2.1.2/bin/./../data/data/bigdspace/bid_list-27b59f109fa211e498559b0947587867/bigdspace-bid_list-ka-3967-Data.db (3830733 bytes) for commitlog position ReplayPosition(segmentId=1421647511710, position=25350445)
INFO  [SlabPoolCleaner] 2015-01-20 13:56:55,493 ColumnFamilyStore.java:840 - Enqueuing flush of bid_list: 95807739 (9%) on-heap, 0 (0%) off-heap
INFO  [MemtableFlushWriter:1590] 2015-01-20 13:56:55,494 Memtable.java:325 - Writing Memtable-bid_list@473510037(20170635 serialized bytes, 179514 ops, 9%/0% of on/off-heap limit)
INFO  [MemtableFlushWriter:1590] 2015-01-20 13:56:56,151 Memtable.java:364 - Completed flushing /root/Cassandra/apache-cassandra-2.1.2/bin/./../data/data/bigdspace/bid_list-27b59f109fa211e498559b0947587867/bigdspace-bid_list-ka-3968-Data.db (3531752 bytes) for commitlog position ReplayPosition(segmentId=1421647511710, position=25373052)
任何帮助或建议都会很好。我还禁用了键空间的持久写入false。谢谢


刚发现在重新启动所有节点后,其中一台服务器上的YGC正在启动,即使没有发生任何事情。停止数据转储等。

您使用什么类型的压缩?大小是分层的还是分层的? 如果您使用的是分级压缩,您是否可以切换到分级大小,因为您似乎有太多的压缩。增加平整压实的sstable尺寸也可能有所帮助

sstable\u size\u(以mb为单位)(默认值:160MB) 使用分层压缩策略的SSTABLE的目标大小。虽然有很多可供选择的尺寸 应小于或等于sstable_size_(单位:mb),则有可能 在压实过程中,更大的表面积。当给定对象的数据 分区键特别大。数据并不是一分为二的 SSTables

()

如果使用大小分层压缩,请在看到较小的压缩之前增加SS表的数量。这是在创建表时设置的,因此可以使用ALTER命令对其进行更改。示例如下:

使用 压缩策略&u class='SizeTieredCompactionStrategy'和 最小压缩阈值=6


创建6个SSTables后压缩

您的路径包含apache-cassandra-2.1.2,为什么要将其标记为cassandra-2.0?我认为SSTables和内部结构的方式是考虑在内的。卡桑德拉2.0和2.1+非常相似。这不是一次大的检修。2.1.2也没有标签。这是一个普遍的问题,即使使用Cassandra 2.0I使用分级压缩(因为我需要快速读取),也会出现这种情况。我使用ActiveMQ,所以数据首先进入队列,然后写入Cassandra。所以写作不是问题。有没有关于sstable的尺寸的指南?此外,如果这个问题没有得到解决,我将更改为大小分层压缩,在看到压缩之前增加SS表的数量。?如果您的0级SS表填充速度很快,则由于分层压缩会导致压缩和高磁盘使用率。我建议你们使用大小分层压缩,或者对级别0使用更大大小的分级压缩。添加了有关如何增加分级的大小或增加分级大小的SSTABLE数量的信息。如果有帮助,请告诉我。非常感谢你的帮助。我将在下午2点(即流量较低时)进行更改,当我在Cassandra中进行更改时,我的ActiveMQ可以轻松保持流量。我会在第二天早上公布结果。我也在研究数据层压缩,根据我所做的工作类型,它看起来很有希望。在增加sstable_size_(单位:mb)后,cpu负载仍然太高,压缩总是发生在一个节点上(用于分析),其余两个节点的cpu负载下降到50%(这很好)。我可以增加多少尺寸。当压缩最终发生时,它会给cpu带来压力吗?右边的iostats显示%util从来没有超过75,而且大多保持在40以下,因此磁盘不应受到指责。我是否应该完全恢复到其他压缩策略?