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

标签 database out-of-memory low-memory crate

我可以找到具有 128MB RAM 的廉价 VPS 主机,我想知道这是否足以为小型数据库运行 crate 节点,最初用于测试。 (我不是在寻找推荐内存,而是最小内存,因为它不会遇到内存不足的异常。Crate 应该是节点。)

最佳答案

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

  1. 选择一个精简的 Linux 发行版,它实际启动和运行时占用的内存非常小。 Alpine 可能是一个选择。
  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,因为这是推荐的可用内存的一半。

我创建了一个表“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 '\n\047'

这花了几分钟时间(大约 20 条记录/秒),但是对于批量插入,它应该方式更快并且只需要几秒钟。

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

操作系统、安装的软件和数据总共占用了 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 秒。

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

关于database - Crate - 节点主机的最低内存要求是多少?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36233338/

相关文章:

mysql - 如何将迁移与可执行文件绑定(bind)

MySQL - ON 更新 CASCADE + foreign_key_checks = 0

iphone - 如何在OpenGL应用程序中响应didReceiveMemoryWarning

java - Viewpager 在低内存终止时松散 fragment 连接

sql - 获取同一表中的公共(public)行

mysql - 合并 2 个 MySQL 查询并按时间戳排序结果

java - OutOfMemoryError : Direct buffer memory when using websockets in WildFly

java - 即使堆使用量远低于限制,Tomcat OOM 错误

hadoop - 超出 Spark Job 错误 GC 开销限制

python - 如何避免 PyTorch 中的 "CUDA out of memory"