当前位置: 首页 > 知识库问答 >
问题:

17076203字节的突变对于16777216的最大大小来说太大了

章飞虎
2023-03-14

我在cassandra设置中有“commitlog_segment_size_in_mb: 32”,但下面的错误表示最大尺寸为16777216,约为16mb。我在看修复下面错误的正确设置吗?

我指的是基于 http://mail-archives.apache.org/mod_mbox/cassandra-user/201406.mbox/<53A40144.2020808@gmail.com>中提供的建议的此设置

我正在为Cassandra使用2.1.0-2。

我使用的是Kairosdb,写缓冲区最大大小是0.5Mb。

WARN  [SharedPool-Worker-1] 2014-10-22 17:31:03,163 AbstractTracingAwareExecutorService.java:167 - Uncaught exception on thread Thread[SharedPool-Worker-1,5,main]: {}
java.lang.IllegalArgumentException: Mutation of 17076203 bytes is too large for the maxiumum size of 16777216
        at org.apache.cassandra.db.commitlog.CommitLog.add(CommitLog.java:216) ~[apache-cassandra-2.1.0.jar:2.1.0]
        at org.apache.cassandra.db.commitlog.CommitLog.add(CommitLog.java:203) ~[apache-cassandra-2.1.0.jar:2.1.0]
        at org.apache.cassandra.db.Keyspace.apply(Keyspace.java:371) ~[apache-cassandra-2.1.0.jar:2.1.0]
        at org.apache.cassandra.db.Keyspace.apply(Keyspace.java:351) ~[apache-cassandra-2.1.0.jar:2.1.0]
        at org.apache.cassandra.db.Mutation.apply(Mutation.java:214) ~[apache-cassandra-2.1.0.jar:2.1.0]
        at org.apache.cassandra.db.MutationVerbHandler.doVerb(MutationVerbHandler.java:54) ~[apache-cassandra-2.1.0.jar:2.1.0]
        at org.apache.cassandra.net.MessageDeliveryTask.run(MessageDeliveryTask.java:62) ~[apache-cassandra-2.1.0.jar:2.1.0]
        at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:471) ~[na:1.7.0_67]
        at org.apache.cassandra.concurrent.AbstractTracingAwareExecutorService$FutureTask.run(AbstractTracingAwareExecutorService.java:163) ~[apache-cassandra-2.1.0.jar:2.1.0]
        at org.apache.cassandra.concurrent.SEPWorker.run(SEPWorker.java:103) [apache-cassandra-2.1.0.jar:2.1.0]
        at java.lang.Thread.run(Thread.java:745) [na:1.7.0_67]

共有2个答案

沈琛
2023-03-14

这是正确的设置。这意味着 Cassandra 将丢弃此写入,因为它超过了配置的提交日志段大小的 50%。因此,将参数设置为commitlog_segment_size_in_mb:64 在群集中每个节点的 Cassandra.yaml 中,然后重新启动每个节点以使更改生效。

原因:根据设计意图,允许的最大段大小为配置的commit_log_segment_size_in_mb的 50%。因此,卡桑德拉避免编写具有大量空白空间的片段。

详细说明;最多两个32MB的段将适合64MB,但是40MB只能适合一次,留下大量未使用的空间。

来自datastax的参考链接:

https://support.datastax.com/hc/en-us/articles/207267063-Mutation-of-x-bytes-is-too-large-for-the-maxiumum-size-of-y-

滕鸿畴
2023-03-14

您正在查看. yaml中的正确参数。C*允许的最大写入大小是commit_log_segment_size_in_mb的一半,默认为32mb,因此默认最大大小为16mb。

commit_log_segment_size_in_mb表示提交日志归档或时间点备份的块大小。只有在commitlog_archiving中配置了archive_command或restore_command时,这些命令才有效。属性文件

 类似资料:
  • 我正在为我的公司设计一个RoR项目,我们的开发团队已经遇到了一些关于设计的争论,特别是数据库。 我们有一个名为的模型,需要持久化。这是一个非常非常小的模型,除了 id 之外只有三个 db 列,但是当我们投入生产时,可能会有很多这样的模型。我们每天看到多达 1,000,000 次插入。模型将只能由其上的两个外键搜索,这些外键可以索引。同样,这些模型永远不必被删除,但我们也不必在它们大约三个月大后保留

  • 我正在尝试使用GridFS和ruby在我的mongo数据库中插入一个33 MB的视频文件,我有一个系统性的“文档超过了允许的最大BSON大小。最大为16777216。”。我认为在mongo集合中插入大于16MB的文件的唯一方法是使用Gridfs,所以我怀疑我做得不对,即使我复制/粘贴了Ruby驱动程序示例(http://docs.mongodb.org/ecosystem/tutorial/rub

  • 我正在开发一个必须打印标签的应用程序。我使用的标签打印机是Brother QL-570。标签宽度是66mm,标签长度需要大约45mm。我遇到的问题是,我无法配置应用程序以实际打印标签。每次这样做时,我都会收到一条警告,说明文档大小对于打印机来说太大。无论我尝试将打印文档的大小更改为什么大小,我总是收到一条警告,说明文档为90mm x 29mm,对于标签打印机来说太大了。 以下是我的一个尝试: 有人

  • 我找到了关于如何计算neo4j数据库大小的以下信息:https://neo4j.com/developer/guide-sizing-and-hardware-calculator/#_disk_storage

  • 问题内容: 所以基本上我正在生成随机的10000个IP地址,我想存储在HashSet中找到的所有那些IP地址,但是根据我的计算,发现了大约6000个IP地址,但是在HashSet中仅存储了700个IP地址?HashSet在存储String方面是否有任何限制。任何建议将不胜感激。 问题答案: 就您而言,没有限制(限制是数组的最大大小,即2 ** 31)。 但是,仅存储 唯一 值,因此我的猜测是您仅生

  • 问题内容: 为什么会限制其大小? 我浏览了一些链接:http : //www.coderanch.com/t/540346/java/java/maximum-size-hold- String-buffer 。 是因为count成员变量是int吗? 假设我们有2 ^ 31-1个字符,并在其中追加了一些字符。Count成员变量将增加附加的字符数,如果Count变量已经达到最大值(2 ^ 31-1)