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。不过,我不推荐它。无论如何,您需要采取一些预防措施:
- Select 一个精简的 Linux 发行版,它实际上可以引导 运行 具有如此小的内存占用。高山可能是一个选择。
- 安装Java。您至少需要 openjdk7(更新 55 及更高版本)。
- 按照 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 秒。
总结:是的,这是可能的,但如果你真的这样做,你会失去很多功能。您的结果将在很大程度上取决于您实际 运行.
的查询类型
我可以找到具有 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。不过,我不推荐它。无论如何,您需要采取一些预防措施:
- Select 一个精简的 Linux 发行版,它实际上可以引导 运行 具有如此小的内存占用。高山可能是一个选择。
- 安装Java。您至少需要 openjdk7(更新 55 及更高版本)。
- 按照 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 秒。
总结:是的,这是可能的,但如果你真的这样做,你会失去很多功能。您的结果将在很大程度上取决于您实际 运行.
的查询类型