如何在YugaByte DB中管理内存?

时间:2019-02-06 18:52:06

标签: database distributed-database yugabyte-db

如何在YugaByte DB中管理内存?我了解到yb-tserveryb-master有两组流程,但是找不到太多其他细节。

具体问题:

  1. 默认情况下,每个进程使用多少RAM?

  2. 是否有一种方法可以对此进行明确控制?

  3. 大概,该内存用于缓存,内存表等。这些组件的大小如何?

  4. 可以将特定的表固定在内存中(或说在缓存中赋予更高的优先级)吗?

谢谢。

1 个答案:

答案 0 :(得分:1)

  1. 默认情况下,每个进程使用多少RAM?

默认情况下:

  • yb-tserver进程假定有85%的节点RAM可供使用。 和
  • yb-master进程假定节点RAM的10%可供使用。

这些由gflag的默认设置确定 --default_memory_limit_to_ram_ratio(分别为0.85和0.1 yb-tserver / yb-master)。

  1. 有没有一种方法可以对此进行明确控制?

是的,有两个不同的选项可以控制为进程yb-master和yb-tserver分配多少内存:

选项A)您可以设置--default_memory_limit_to_ram_ratio来控制 进程应使用多少百分比的节点RAM。

选项B)您也可以使用 --memory_limit_hard_bytes。例如,给yb-tserver 32GB的 RAM,使用:

--memory_limit_hard_bytes 34359738368

由于您是分别启动这两个进程的,因此可以对yb-master或yb-tserver使用任一选项。只要确保您没有超额预订计算机总内存,因为yb-master和yb-tserver进程可以出现在单个VM上。

  1. 大概该内存用于缓存,内存表等。 这些组件的大小?

是的,内存的主要使用者是块缓存,内存存储和 飞行中的请求/ RPC所需的内存。

块缓存: --db_block_cache_size_percentage=50 (default)

总内存存储是这两个旋钮中的最小值: --global_memstore_size_mb_max=2048 --global_memstore_size_percentage=10

  1. 能否将特定表固定在内存中(或说高一些) 优先级)?

我们目前(自1.1版起)还没有按表固定的提示。 但是,默认情况下,块缓存确实做得很好 将热块保留在缓存中。我们已将RocksDB的块缓存增强为 耐扫描。动机是防止诸如 长时间运行的扫描(例如,由于偶尔的大型查询或 后台Spark作业) 质量数据并清除有用/热门数据。