我在 ec2 中运行一个 26 节点集群,分布在 4 个区域 - us-east-1、us-west-2、eu-west-1 和 ap-southeast-1。我注意到有时节点需要很长时间才能启动,并且问题在 ap-southeast-1 中似乎特别严重。例如,今天仅重新启动一个节点就需要 4 个多小时。发生这种情况时,cassandra (system.log) 记录的最后一件事是:
INFO [main] 2016-10-19 20:35:14,846 ColumnFamilyStore.java:395 - Initializing system_schema.indexes
最终它继续初始化我自己的列族,但我不明白什么需要这么长时间。这个特定节点上有大约 900G 的数据,使用 3.2T EBS 卷。
虽然这种情况正在发生,但似乎很少有资源争用。网络 i/o 似乎没有超过 1Mb/s。数据量和提交日志基本上都是0 i/o。CPU 使用率在 25%-50% 范围内。看着strace
,似乎有大量的getdents
系统调用,但这似乎不会引起问题。
什么可以解释这么长的启动时间?
集群信息
- 卡桑德拉 DDC 3.5
- EC2MultiRegionSnitch
- m4.xlarge,移动到 c4.4xlarge
架构信息
- 3 个 CF,全部“写入一次”(即不更新),1 周 ttl,STCS(默认)
- 没有二级索引