cassandra - 如何为大型裸机服务器部署调整 cassandra
问题描述
我在大型裸机服务器上部署了 cassandra。56 核和 756 gb ram 20 TB SSD。(我知道它是一种反模式,但我别无选择创建 vm 或任何东西)。它是一个 10 节点集群。哪些设置对于此类部署很重要。
我的阅读和写作工作量很大。遇到很长的压缩时间会导致读取和写入超时。
我不认为 CPU、内存、磁盘、网络是瓶颈
解决方案
所以我对密集节点架构有一句话:“大服务器等于大问题。”
我能想到一些可能会有所帮助的事情。
在 中cassandra.yaml
,检查这两个设置:
concurrent_compactors: 2
compaction_throughput_mb_per_sec: 16
具体来说,concurrent_compactors
是可以与 CPU 内核数量成比例的设置之一。我不会太高,但可能会通过增加 2 倍来测试它,看看你是否注意到任何东西。此外,使用您的资源,您应该compaction_throughput_mb_per_sec
至少可以设置为 256。关于这个的好消息是,您可以nodetool
临时设置它,只是为了尝试一下。
确保针对 SSD 优化了特定于磁盘的设置:
disk_optimization_strategy: ssd
trickle_fsync: true
并确保服务器设置为使用 G1GC 收集器,并且您可能负担得起 32GB 左右的大堆。
另外,请阅读Amy Tobey 的 Cassandra 2.1 Tuning Guide。她有很多很好的信息,这些信息仍然适用于 Cassandra 3。
TBH 不过,亚历克斯是对的。 最大的胜利将是调整您的表定义。 Cassandra 的性能更多地与数据模型定义有关。如果这不正确,那么任何服务器端“调整”都无济于事。
推荐阅读
- here-api - 在 HERE 中使用 calculateroute 检索道路名称,并在第一个航路点后停止提供
- gcc - gcc 内联汇编中的 Clobber 列表
- python - 如何在调用 ADC.setup() 时修复“RuntimeError:无法设置 ADC 系统。可能...”
- node.js - 如何在回调中实现 Firebase 设置请求
- r - 如何在不丢失矩阵结构的情况下更改矩阵列表中每个矩阵的类型/类
- android - 如何在 facebook litho for android 中添加 exoplayer
- python - 使用 json 对象形成 sql 命令失败
- python - Django Admin-父 ModelChoiceField 上的动态子 ModelChoiceField 查询集
- c# - 我如何在winforms(许多组框)中foreach所有按钮
- angular - 离子延迟加载子数组中的模块