1

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

4

2 回答 2

3

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

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

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

我创建了一个表“演示”

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

and filled it up with 10,000 records of 10 KB random strings each with a slow bash script:

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

This took a few minutes (about 20 records/s), but with bulk inserts it should be way faster and just take seconds.

The net amount of data was about 100 MB and took 287 MB gross on disk as reported by the admin UI.

Operating system, the installed software, and the data altogether claimed 820 MB on the disk.

I configured twice the amount of memory as swapspace and got the following footprint (the Crate process itself without data takes up about 40 MB):

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

A fulltext search over all 10,000 records (SELECT count(*) FROM demo WHERE data LIKE '%ABC%') took about 1.9 seconds.

Summary: Yes, it's possible, but you lose a lot of features if you actually do so. Your results will heavily depend on the type of queries you actually run.

于 2016-03-31T13:07:04.417 回答
1

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

确保使用CRATE_HEAP_SIZE( docs ) 环境变量正确设置 HEAP 大小,并且将bootstrap.mlockall: true( docs ) 设置为 JVM 不会交换内存。

但是,我会推荐至少256MBHEAP(512MB内存)。

于 2016-03-31T11:52:12.803 回答