如何在YugaByte DB中管理内存?

问题描述 投票:1回答:1

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

具体问题:

  1. 默认情况下,每个进程使用多少RAM?
  2. 有没有办法明确控制这个?
  3. 据推测,内存用于缓存,memtables等。这些组件的大小如何?
  4. 特定的表可以固定在内存中(或者说在缓存中给予更高的优先级)?

提前致谢。

database distributed-database yugabyte-db
1个回答
1
投票
  1. 默认情况下,每个进程使用多少RAM?

默认情况下:

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

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

  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. 据推测,内存用于缓存,memtables等。这些组件的大小如何?

是的,内存的主要消费者是飞行中的请求/ RPC所需的块缓存,memstores和内存。

Block Cache:--db_block_cache_size_percentage=50 (default)

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

  1. 特定的表可以固定在内存中(或者说在缓存中给予更高的优先级)?

我们目前(截至1.1)还没有每表固定提示。但是,默认情况下,块缓存确实可以很好地保留缓存中的热块。我们增强了RocksDB的块缓存,使其具有抗扫描性。其动机是防止诸如长时间运行的扫描(例如,由于偶尔的大型查询或后台Spark作业)之类的操作用低质量数据污染整个高速缓存并消除有用/热数据。

© www.soinside.com 2019 - 2024. All rights reserved.