1

我有一个 Cassandra 安装,其中包含一个不超过 110k 记录的表。

我在使用 PDI 5.3(最新版本)查询数据时遇到了很多麻烦。我在 Cassandra 方面经常失去记忆。

当然,我安装 Cassandra 的服务器不是最大的,4Gb RAM 并且只有 2 个内核,我仍然希望能够毫无问题地执行这个简单的任务。

在 cassandra/conf/cassandra-env.sh中,我配置了:

MAX_HEAP_SIZE="4G"
HEAP_NEWSIZE="200M"

现在我可以查询的最大行数是 80k。文档建议将 MAX_HEAP_SIZE 设置为机器 RAM 的 1/4。但对我来说,这意味着 1G 并且只有大约 20k 行要查询。

我可以通过在 PDIlimit的步骤中使用关键字限制选择来判断我可以查询多少行。Cassandra input

我可以调整任何其他参数以获得更好的性能吗?这是一个开发服务器,在生产中我会期待超过 100 万行的查询。

安装 Cassandra 的服务器:Red Hat Enterprise Linux Server release 6.6 (Santiago)

Cassandra 版本:apache-cassandra-2.1.2

编辑:版本更新。

4

1 回答 1

2

为内存牺牲 IO(因为内存正在杀死你):

  • 如果启用了较低的键/行缓存(默认情况下启用键缓存)
  • 如果您执行大量删除,则可以降低 gc_grace_seconds 以更快地删除墓碑(假设您在获取 80k 行时进行了多次范围扫描,这会有所帮助)

其他一些想法:

  • 分页(选择 80k 中的 0-10k,然后选择 10-20k 等。
  • 检查内存表的大小,如果它们太大,请降低它们。
  • 使用跟踪来验证您正在检索的内容(墓碑可能会导致大量开销

该线程建议降低 commit_log 大小,但提交日志在 2.1 中进行了重大修改并移出堆外,不再是这样的问题。

于 2015-02-28T01:56:06.127 回答