如何在YugaByte DB中管理内存?我知道有两套流程yb-tserver
和yb-master
,但找不到太多其他细节。
具体问题:
提前致谢。
默认情况下:
这些是由gflag --default_memory_limit_to_ram_ratio
的默认设置确定的(yb-tserver / yb-master分别为0.85和0.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上。
是的,内存的主要消费者是飞行中的请求/ 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)还没有每表固定提示。但是,默认情况下,块缓存确实可以很好地保留缓存中的热块。我们增强了RocksDB的块缓存,使其具有抗扫描性。其动机是防止诸如长时间运行的扫描(例如,由于偶尔的大型查询或后台Spark作业)之类的操作用低质量数据污染整个高速缓存并消除有用/热数据。