gpt4 book ai didi

Cassandra 在长期运行中遇到 OutOfMemory 问题(Java 堆空间)

转载 作者:行者123 更新时间:2023-12-04 05:03:02 26 4
gpt4 key购买 nike

我们通过尝试一些长时间运行的测试用例(压力测试)来对 Cassandra 进行一些试验,并且我们在任何给定时间在集群的一个节点上遇到一些内存问题(它可以是集群上的任何机器!)

我们在装有 Windows Server 2008 和 8 GB RAM 的机器上使用 Cassandra 1.1.6 运行 DataStax 社区。此外,我们已将堆大小配置为 2GB,而默认值为 1GB。

日志中的一个片段:

java.lang.OutOfMemoryError:Java 堆空间

将堆转储到 java_pid2440.hprof ...

已创建堆转储文件 [11.713 秒内为 1117876234 字节]

错误 22:16:56,756 线程 Thread[CompactionExecutor:399,1,main] 中的异常

java.lang.OutOfMemoryError:Java 堆空间

在 org.apache.cassandra.io.util.FastByteArrayOutputStream.expand(FastByteArrayOutputStream.java:104)

在 org.apache.cassandra.io.util.FastByteArrayOutputStream.write(FastByteArrayOutputStream.java:220)

在 java.io.DataOutputStream.write(Unknown Source)

任何调查和解决此问题的指示/帮助。??

最佳答案

通过长时间运行负载测试,您正在做正确的事情,但在生产用例中,您不会像这样编写数据。

当需要压缩它们时,您的行可能变得太大而无法放入 RAM。压缩需要整行以适合 RAM。

每行也有 20 亿列的硬限制,但实际上你不应该让行增长那么宽。通过向行键添加日期或服务器名称或数据集中常见的其他值来存储它们。

对于“经常写入几乎从不读取”的工作负载,您可以拥有非常宽的行,但不应接近 20 亿列标记。使用分桶保持数百万。

对于经常读取整行的写入/读取混合工作负载,即使数百列也可能太多。

如果您正确对待 Cassandra,您将轻松处理每个节点每秒数千次的读取和写入。我看到我的主集群上每个节点同时进行大约 2.5k 次读取和写入。

关于Cassandra 在长期运行中遇到 OutOfMemory 问题(Java 堆空间),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15877451/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com