我把Cassandra当作Kubernetes吊舱。一个pod有一个cassandra容器。我们正在运行3.11.4版本的cassandra,并将auto\u bootstrap设置为true。我在生产中有5个节点,它保存20gb的数据。
由于一些维护活动,如果我重新启动任何Cassandra吊舱,它需要30分钟的引导,然后它就来了,正常状态。在生产30分钟是一个巨大的时间。
如何减少cassandra吊舱的启动时间?
谢谢您!!
我把Cassandra当作Kubernetes吊舱。一个pod有一个cassandra容器。我们正在运行3.11.4版本的cassandra,并将auto\u bootstrap设置为true。我在生产中有5个节点,它保存20gb的数据。
由于一些维护活动,如果我重新启动任何Cassandra吊舱,它需要30分钟的引导,然后它就来了,正常状态。在生产30分钟是一个巨大的时间。
如何减少cassandra吊舱的启动时间?
谢谢您!!
1条答案
按热度按时间7cwmlq891#
如果您正在重新启动现有的节点,并且数据仍然存在,那么它不是节点的引导,而是重新启动。
您可能遇到的一个问题是,在重新启动之前没有排空节点,所有提交日志都需要在启动时重放,如果提交日志中有大量数据,这可能需要花费大量时间(您只需检查
system.log
Cassandra当时在做什么)。所以解决办法可能是执行nodetool drain
在停止节点之前。如果节点在崩溃或类似情况之前重新启动,则可以按照memtable中数据的常规刷新方向进行操作,例如通过
nodetool flush
,或通过memtable_flush_period_in_ms
最忙的table上的选项。但要小心这种方法,因为它可能会创建许多小表,这将增加更多的压缩过程的负荷。