Cassandra部分参数调优

2023-11-16

优化一:commitlog文件

由于客户端写数据时需要阻塞写commitlog(默认64GB),所以可以把commitlog放在SSD或者较为空闲的盘中。执行一次刷操作成功后,commitlog文件将被删除。

commitlog_directory

 

优化二:data文件

最好把data文件和commitlog放在两个不同的硬盘中,确保data不会和commitlog争抢IO时间。可配置多个。

data_file_directories

 

优化三:回复超时时间

代表cassandra在等待其他节点响应的最大失败时间,在cassandra.yaml中,rpc_timeout_in_ms,默认是5s,如果网络不好或者数据量较大的情况下,可以适当调大改时间。

 

优化四:commitlog_sync

Cassandra按照特定的时间间隔,将数据持久化,默认是periodic,可能会丢失数据。改为batch时,在数据持久化到磁盘上时,会阻塞写操作会造成性能下降。同时改为batch是需要给CommitLogSyncBatchWindowInMS一个合理的值。

 

优化五:memtable

在写入磁盘之前每个列族的数据都会先写入一个单独的memtable中,memtable的大小由binary_memtable_throughput_in_mb控制。

同时还有memtable_throughput_in_mb,这是代表memtable被刷到磁盘之前可以存储的最大列数。默认是0.3,大约333000。

通过memtable_flush_after_mins设置,当memtable被刷到磁盘之后可以保留多久。

在memtable刷到磁盘之前,先会写入到一个缓冲区里,可以使用flush_data_buffer_size_in_mb(默认:32M)控制。

通过memtable_flush_writers(默认:1)设置memtable写入磁盘时所需要使用的线程数量,如果堆设置的比较大,我们可以调高这个值。

 

优化六:写操作并发

Cassandra的写入性能高于读取性能,其中可以通过:concurrent_writes来修改Cassandra的写入操作的执行线程数量,这个应该设置为未来将会并发连接到服务器的客户端的数量。

 

优化七:读操作并发

Cassandra的读取性能可以通过:concurrent_reads来修改Cassandra的写入操作的执行线程数量,以提高读取性能,每个核对应两个线程最好,比如说8核的物理机应该配置16个读线程。

 

优化八:缓存

注意,缓存可能会占用相当大的内存,应该根据使用情况来小心的调整他们。

缓存分为行缓存和键缓存。

行缓存会缓存整行数据,因此他会包含键缓存,设置了行缓存就不需要设置键缓存。

缓存策略确定条件:

  1. 考虑查询,使用更适合查询方式的缓存类型。
  2. 考虑堆存和缓存的比例,不要让缓存占满堆容量。
  3. 考虑行和键值的大小,通常键的大小比行小。

键缓存

keys_cached是设置存储在内存之中的键位置的数量而不是键值的数量。这个值可以指定一个小数或一个整数。小数是指定了一个要缓存的键值的百分比,如果使用了一个整数,则是指定将要缓存的键值位置的绝对数值。

行缓存

rows_cached是设置Cassandra中缓存的行数。默认是0,如果使用小数则是全部数据的百分比,如果是整数则要缓存一个绝对值。

 

优化九:缓冲区

在优化五中有一条关于缓冲区的优化配置,还有如下配制:flush_index_buffer_size_in_mb(默认8M),如果每个key之定义了很少的列则可以考虑增加该配置的大小,相反则减少。

 

优化十:JVM

最大和最小堆

 在Cassandra中垃圾回收期采用的是CMS垃圾回收器,在这里最大、最小堆应该设置为相同的值。

最大内存: max(min(1/2 ram, 1024MB), min(1/4 ram, 8GB))

新生代大小:min(100M * num_cores, 1/4 * max heap size)

176414M 1024M      88207M 8192M       8192M

100*56,2048                          2048M

 

新生代和老年代

新生代:Eden区、From区、to区的占比是: 8:1:1

老年代:新生代 = 2:1

由于Cassandra中很多对象会长期存在所以增加old区占比是合适的。

MaxTenuringThreshold(默认:1)新生代对象会在from区和to区来回复制这个复制会造成性能的开销,可以将其改为0,代表存活过一次gc的新生代对象直接进入老年代。

取消偏向锁

在热点发生时会有许多争抢锁的情况,偏向锁适得其反。关闭:JVM_OPTS="$JVM_OPTS -XX:-UseBiasedLocking"

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Cassandra部分参数调优 的相关文章

  • Cassandra 墓碑对多个查询与单个查询进行计数

    我有一个 cassandra 表定义如下 CREATE TABLE mytable colA text colB text timeCol timestamp colC text PRIMARY KEY colA colB timeCol
  • 使用 pycassa 读取 Cassandra 1.2 表

    使用卡桑德拉 1 2 我按以下方式使用 CQL 3 创建了一个表 CREATE TABLE foo user text PRIMARY KEY emails set
  • 如何从 Spark UI 检索输出大小和写入记录等指标?

    如何在任务或作业完成后立即在控制台 Spark Shell 或 Spark 提交作业 上收集这些指标 我们使用 Spark 将数据从 Mysql 加载到 Cassandra 数据非常庞大 例如 200 GB 和 600M 行 当任务完成后
  • Datastax Cassandra OpsCenter 服务未在 Windows 7 上启动

    我是卡桑德拉的新手 我按照中提到的说明在 Windows 7 64 位上安装了 DataStax Cassandra 社区版DataStax 社区版 http www datastax com 2012 01 getting started
  • Cassandra CQL 查询检查多个值

    如何使用 Cassandra CQL 查询检查非主键字段的值是 A 还是 B 我使用的是Cassandra 2 0 1 这是表定义 CREATE TABLE my table my field text my field2 text PRI
  • Cassandra 和二级索引,它们内部如何工作?

    Cassandra 二级索引内部如何运作 文档指出它是某种哈希索引 鉴于我有专栏username foobar 列用户名将是 CF 中的辅助索引 User with RandomOrderingPartitioner 我的假设是否正确 ca
  • Redis是如何实现高吞吐量和高性能的?

    我知道这是一个非常普遍的问题 但是 我想了解允许 Redis 或 MemCached Cassandra 等缓存 以惊人的性能极限工作的主要架构决策是什么 如何维持连接 连接是 TCP 还是 HTTP 我知道它完全是用C写的 内存是如何管理
  • 使用 TLS/SSL 保护 Cassandra 通信

    我们希望保护 Cassandra 免受中间人攻击 有没有办法配置 Cassandra 使客户端 服务器和服务器 服务器 复制 通信采用 SSL 加密 谢谢 简短的回答 不 对于客户端 服务器 节俭 151 https issues apac
  • Spark Scala Cassandra 连接器删除所有行失败,并出现 IllegalArgumentException 要求失败异常

    创建表 CREATE TABLE test word groups group text word text count int PRIMARY KEY group word 插入数据 INSERT INTO test word group
  • Cassandra - 选择而不复制

    假设我创建了一个键空间和表 CREATE KEYSPACE IF NOT EXISTS keyspace rep 0 WITH replication class SimpleStrategy replication factor 0 CR
  • 关于 Cassandra 与 MySQL 的一些建议

    几天前我在这里问了一个问题 得到了一些非常好的答案 我正在考虑做一个带有个人资料 个人简介等的facebook风格的网站 并询问我是否应该使用mysql 答案是使用Cassandra 因为好多了 我只是问这是每个人都会建议的 只是我对mys
  • Hector 和 Cassandra 问题 NoSuchFieldError:DEFAULT_MEMTABLE_THROUGHPUT_IN_MB

    我正在通过 Hector 测试与 Cassandra 数据库的连接 但是当我运行 Junit 测试时 我不断收到以下消息 java lang NoSuchFieldError DEFAULT MEMTABLE THROUGHPUT IN M
  • 表行为的 cassandra TTL

    假设我在 secondary 1 处插入一列 在 secondary 2 处插入另一列 表的默认 TTL 设置为 10 秒 例如 问题1 data1 和 data2 是否会在 10 秒后被删除 或者 data 1 将在 10 秒后被删除 d
  • 不使用 CPU 时 Cassandra 超时

    我使用 Phantom DSL 和 Datastax Cassandra 驱动程序时遇到 Cassandra 超时 然而 Cassandra 似乎并没有超载 以下是我得到的异常 com datastax driver core except
  • Cassandra 默认配置为丢失 10 秒数据?

    由于Commitlog中的数据默认每隔10秒定期刷新到磁盘 由commitlog sync period in ms 那么如果所有副本在 10 秒内崩溃 我会丢失所有数据吗 这是否意味着从理论上讲 Cassandra 集群可能会丢失数据 如
  • Redis AOF fsync(始终)与 LSM 树

    我对日志结构化合并树 LSM 树 的理解是 它利用了附加到磁盘非常快 因为它不需要查找 这一事实 只需将更新附加到预写日志并返回到客户端即可 我的理解是 这仍然提供了立即的持久性 同时仍然非常快 我不认为 Redis 使用 LSM 树 它似
  • Cassandra公共IP未连接

    我在 ubuntu 服务器中使用 cassandra 当我尝试使用 CLI 与公共 IP 地址进行连接时 它返回连接被拒绝 而如果我尝试使用 localhost 它工作正常 我在 cassandra yaml 和 storage conf
  • Cassandra LWT 读取

    据我了解 LWT 插入始终以 SERIAL 一致性级别完成 如果为 true 这是否意味着读取作为 LWT 插入的行可以安全地以 ANY 一致性级别读取 换句话说 我假设 LWT 插入是完全一致的 使得任何后续读取也完全一致 无论一致性级别
  • 什么时候不应该使用 Cassandra? [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 相关话题已经有很多讨论了卡桑德拉 http cassandra apache org lately Twitter Digg Facebook
  • 在 Cassandra 术语中,TimeUUID 是什么?

    在 Cassandra 术语中 什么是TimeUUID什么时候使用它 TimeUUID 是一个随机的全局唯一标识符 16 字节 十六进制表示示例 a4a70900 24e1 11df 8924 001ff3591711 See http e

随机推荐

  • 常数据成员、常成员函数

    定义常数据成员 类型 const 对象名 或者 const 类型 对象名 例如 const clock c1 9 9 9 或者 clock const c2 10 10 10 常对象的几条特殊规则 1 常对象 不能被赋值 2 常对象 不能访
  • 【Pytorch Lighting】第 7 章:半监督学习

    大家好 我是Sonhhxg 柒 希望你看完之后 能对你有所帮助 不足请指正 共同学习交流 个人主页 Sonhhxg 柒的博客 CSDN博客 欢迎各位 点赞 收藏 留言 系列专栏 机器学习 ML 自然语言处理 NLP 深度学习 DL fore
  • 2、halcon+利用光流场检测运动的物体

    这个事例是应用optical flow mg这个算子来在一个图像序列中计算其光溜 并且分割其运动物体 dev update off 把程序窗口 变量窗口 显示窗体变为off状态 dev close window 关闭显示窗口 read im
  • Bert Estimator input_fn 函数调用逻辑

    目录 Bert Estimator input fn 函数调用逻辑 Bert Estimator input fn 函数调用逻辑 网上有很多讲 Bert 源码的 本身代码难度不大 主要两个重点 一个是数据集的处理 以满足 masked LM
  • 整理极客冠军方案

    总结 通常套路就是 1 先观察整体的数据分布 数据集数量 标签数量 标注框数量 数据集数量 数量大 大模型训练缓慢 标签数量 各类的分布情况 gt 分布是否平衡 focal损失函数 长尾分布 样本分布不均衡 mosaic 小目标相对较多 m
  • springboot MongoDB 主从 多数据源

    上一篇 我写了关于用一个map管理mongodb多个数据源 每个数据源 只有单例 的内容 springboot mongodb 配置多数据源 临到部署到阿里云的测试环境 发现还需要考虑一下主从的问题 阿里云买的数据库 不是说让你无感知的 而
  • curl 支持 http2

    源码安装 安装 nghttp2 git clone https github com tatsuhiro t nghttp2 git cd nghttp2 autoreconf i automake autoconf configure m
  • Android Notifaction 从4.0到7.0

    Android Notifaction 从4 0到7 0 图1 4 0 通知样式 图2 5 0 6 0 通知样式 图3 7 0 通知样式 兼容 这么多版本 如何兼容 没关系 交给 android support v7 app Notific
  • 几种RS485隔离通讯的方案介绍

    RS485具有抗干扰能力强 成本低等特点 广泛应用于工业智能仪表 通讯设备等各个领域 RS485电路可以分为非隔离型和隔离型 隔离型电路是在非隔离型电路的基础上增加隔离性能 使得电路具有更强的抗干扰性和系统稳定性 今天介绍几种隔离RS485
  • 说说我亲历的京东发展史

    最近好久没有写博客了 响应CSDN的号召 有奖征文 我亲历的京东发展史 所以我也来从个人观点来说说对京东的一些看法 京东从某种程度上来说 确实改变了我们的生活 使我们生活变得更加丰富多彩 通过阅读 京东技术解密 看到京东的愿景是 让生活变得
  • 依据ASCII排序:有关map.entrySet()的一些心得

    List
  • java的main是主线程吗_main函数是主线程吗

    1 线程的概念 线程是程序最基本的运行单位 而进程不能运行 所以能运行的 是进程中的线程 2 线程是如何创建起来的 进程仅仅是一个容器 包含了线程运行中所需要的数据结构等信息 一个进程创建时 操作系统会创建一个线程 这就是主线程 而其他的从
  • AI 与智能化 API 治理的探索实践

    7月 Eolink 受邀参加 QECon 2023 全球软件质量 效能大会 北京站 Eolink CEO 刘昊臻 发表了主题为 AI 与智能化 API 治理的探索实践 的演讲 分享 Eolink 在 API 全生命周期中治理实践与 AI 结
  • Qt工具相关--无法Debug调试的原因

    第一个原因 缺少对应的调试器 第二个原因 调试器的位数没有对应 这些基本原因都可以在项目 构建套件里面看到 逐项检查 耐心分析问题原因是工程师的基本功 第二次遇到类似问题 解决效率务必大幅度提升 这个一道及格线
  • javascript atob()函数和 btoa()函数-Base64的编码与解码

    在 JavaScript 中 有两个函数被分别用来处理解码和编码 base64 字符串 atob ASCII to Base64 btoa Base64 to ASCII atob 函数能够解码通过base 64编码的字符串数据 相反地 b
  • Vue3.0 PC端滑块拼图验证,配合后端验证

    Vue3 0 PC端滑块拼图验证 配合后端验证 简介 最近因为产品需要实现一个滑块拼图验证 而且需要配合后端进行验证 不想接入第三方SDK 所以自己手写了一个 主要是配合element plus 实现UI大致框架 背景图片和拼图都是通过后端
  • matlab求解整数规划、0-1规划

    matlab求解整数规划 0 1规划 R2014以前无法求解整数规划 2014之后用bintprog求解0 1规划 线性规划在2016版本中暂时还可用linprog求解 注 代码中标注的pXXXtaskX指的是西安交大采用的第二版数学实验教
  • Chrome浏览器高级参数

    重新启动一个新的Chrome浏览器 Applications Google Chrome app Contents MacOS Google Chrome disable web security user data dir Users s
  • 服务网格实施周期缩短 50%,丽迅物流基于阿里云 ACK 和 ASM 的云原生应用管理实践

    公司介绍 丽迅物流是百丽旗下专注于时尚产业 为企业提供专业物流及供应链解决方案的服务商 其产品服务主要包括城市落地配 仓配一体 干线运输及定制化解决方案 通过自研智能化物流管理平台 全面助力企业合作集约化发展 目前 丽迅物流已在全国拥有 7
  • Cassandra部分参数调优

    优化一 commitlog文件 由于客户端写数据时需要阻塞写commitlog 默认64GB 所以可以把commitlog放在SSD或者较为空闲的盘中 执行一次刷操作成功后 commitlog文件将被删除 commitlog directo