Crate - 节点主机的最低内存要求是多少?

Crate - What is the minimum memory requirement for a node host?

我可以找到具有 128MB RAM 的便宜 VPS 主机,我想知道这是否足以 运行 为小型数据库创建一个板条箱节点,最初用于测试。 (我不是在寻找 recommended 内存,而是 minimum 内存,因为不会 运行ning 进入内存不足异常. crate 应该是节点中唯一的服务。)

我只是试了一下您可以将 HEAP 大小减少到多少,看起来 64MB 堆(128MB 内存)可以满足您的用例。

确保使用 CRATE_HEAP_SIZE (docs) environment variable and also set bootstrap.mlockall: true (docs) 正确设置 HEAP 大小,以便 JVM 不交换内存。

但是,我建议至少 256MB HEAP(512MB 内存)。

可以在这样的环境中 运行 Crate。不过,我不推荐它。无论如何,您需要采取一些预防措施:

  1. Select 一个精简的 Linux 发行版,它实际上可以引导 运行 具有如此小的内存占用。高山可能是一个选择。
  2. 安装Java。您至少需要 openjdk7(更新 55 及更高版本)。
  3. 按照 Crate 网站上的说明从 tarball 安装并启动 Crate。

在 Alpine 3.3 之上的具有 128 MB RAM 的虚拟机上,我在磁盘上安装了 openjdk8-jre(您必须在 /etc/apk/repositories 中启用社区存储库)。我下载了 Crate 0.54.7 tarball 并解压了它。我设置 CRATE_HEAP_SIZE=64m 因为这是推荐的可用内存的一半。

我创建了一个table"demo"

DROP TABLE IF EXISTS demo;
CREATE TABLE demo (
    data string
);

并用 10,000 条 10 KB 随机字符串的记录填充它,每条记录都有一个缓慢的 bash 脚本:

head -c7380 /dev/urandom | uuencode - | grep ^M | tr -d '\n7'

这花了几分钟(大约 20 records/s),但是对于批量插入,它应该 方式 更快,只需要几秒钟。

据管理员报告,净数据量约为 100 MB,磁盘总占用空间为 287 MB UI。

操作系统、安装的软件和数据总共占用了 820 MB 的磁盘空间。

我配置了两倍的内存量作为交换空间并得到了以下占用空间(没有数据的 Crate 进程本身占用大约 40 MB):

# free
             total       used       free     shared    buffers     cached
Mem:        120472     117572       2900          0        652       6676
-/+ buffers/cache:     110244      10228
Swap:       240636     131496     109140

对所有 10,000 条记录 (SELECT count(*) FROM demo WHERE data LIKE '%ABC%') 进行全文搜索大约需要 1.9 秒。

总结:是的,这是可能的,但如果你真的这样做,你会失去很多功能。您的结果将在很大程度上取决于您实际 运行.

的查询类型