Vastbase 的 max_process_memory 限制


🌟 Vastbase 的 max process memory 限制

Vastbase 数据库在容器化部署时,默认将每个数据库进程的最大内存使用限制为容器总内存的 80%。这个设置是为了避免数据库进程占用过多内存,影响容器内其他进程的稳定性。虽然官方文档中没有明确说明这一限制,但这是一个常见的实践,旨在确保系统资源的合理分配。


🐧 OpenGauss 的内存限制

OpenGauss 是华为推出的关系型数据库,基于 PostgreSQL 开发。它提供了多个参数来控制内存使用,例如:

  • shared_buffers:控制共享内存缓冲区的大小。
  • work_mem:控制每个操作的工作内存大小。
  • maintenance_work_mem:控制维护操作的内存大小。

然而,OpenGauss 并没有像 Vastbase 那样明确限制进程使用的最大内存比例。管理员需要根据实际需求和系统资源,手动调整这些参数,以优化性能。


🐘 PostgreSQL 的内存限制

PostgreSQL 是一个开源的关系型数据库,它也没有像 Vastbase 那样设置进程最大内存使用比例的限制。类似于 OpenGauss,PostgreSQL 提供了多个参数来控制内存使用,例如:

  • shared_buffers:控制共享内存缓冲区的大小。
  • work_mem:控制每个操作的工作内存大小。
  • maintenance_work_mem:控制维护操作的内存大小。

这些参数的设置需要根据系统的总内存和数据库的负载情况来调整,以确保数据库的稳定运行。


💡 总结

  • Vastbase:默认将每个进程的最大内存使用限制为容器总内存的 80%,这是为了避免数据库进程占用过多内存,影响其他进程的稳定性。
  • OpenGauss 和 PostgreSQL:没有类似的进程最大内存使用比例限制,管理员需要根据实际需求和系统资源,手动调整内存相关参数。
报错日志: [root@vdb1 script]# ./gs_expansion -U vastbase -G vastbase -h 192.168.248.140 -X ../cluster_config0721.xml Start expansion with cluster manager component. Start to send soft to each standby nodes. End to send soft to each standby nodes. Success to send XML to new nodes Start to perform perinstall on nodes: ['vdb4'] Preinstall command is: /tmp/gs_expansion_2025-07-21_13_22_17_999864/pkg/script/gs_preinstall -U vastbase -G vastbase -X /data/soft/vastbase-installer/cluster_config0721.xml -L --sep-env-file=/home/vastbase/.Vastbase --non-interactive 2>&1 Traceback (most recent call last): File "/data/soft/vastbase-installer/script/gspylib/threads/SshTool.py", line 609, in getSshStatusOutput raise Exception(ErrorCode.GAUSS_514["GAUSS_51400"] Exception: [GAUSS-51400] : Failed to execute the command: source /etc/profile && unset LD_LIBRARY_PATH && /data/soft/vastbase-installer/lib/python/bin/python3 /data/soft/vastbase-installer/script/gspylib/pssh/bin/pssh -t 310 -H vdb4 -P -p 300 -o /tmp/gauss_output_files_1405752_2025-07-21_13:22:19_199259_016 -e /tmp/gauss_error_files_1405752_2025-07-21_13:22:19_199259_016 "source /etc/profile;source /home/vastbase/.Vastbase;/tmp/gs_expansion_2025-07-21_13_22_17_999864/pkg/script/gs_preinstall -U vastbase -G vastbase -X /data/soft/vastbase-installer/cluster_config0721.xml -L --sep-env-file=/home/vastbase/.Vastbase --non-interactive 2>&1" 2>&1 | tee /tmp/gauss_result_1405752_2025-07-21_13:22:19_199259_016.log. Error: [1] 13:28:18 [FAILURE] vdb4 Timed out, Killed by signal Signals.SIGKILL During handling of the above exception, another exception occurred: Traceback (most recent call last): File "./gs_expansion", line 614, in <module> expansion.expand_run(expansion) File "./gs_expansion", line 447, in expand_run expand_impl.run() File "/data/soft/vastbase-installer/script/impl/expansion/expansion_impl_with_cm.py", line 558, in run self.do_preinstall() File "/data/soft/vastbase-installer/script/impl/expansion/expansion_impl_with_cm.py", line 470, in do_preinstall self.preinstall_run() File "/data/soft/vastbase-installer/script/impl/expansion/expansion_impl_with_cm.py", line 145, in preinstall_run self.ssh_tool.getSshStatusOutput(cmd, File "/data/soft/vastbase-installer/script/gspylib/threads/SshTool.py", line 650, in getSshStatusOutput raise Exception(str(e)) Exception: [GAUSS-51400] : Failed to execute the command: source /etc/profile && unset LD_LIBRARY_PATH && /data/soft/vastbase-installer/lib/python/bin/python3 /data/soft/vastbase-installer/script/gspylib/pssh/bin/pssh -t 310 -H vdb4 -P -p 300 -o /tmp/gauss_output_files_1405752_2025-07-21_13:22:19_199259_016 -e /tmp/gauss_error_files_1405752_2025-07-21_13:22:19_199259_016 "source /etc/profile;source /home/vastbase/.Vastbase;/tmp/gs_expansion_2025-07-21_13_22_17_999864/pkg/script/gs_preinstall -U vastbase -G vastbase -X /data/soft/vastbase-installer/cluster_config0721.xml -L --sep-env-file=/home/vastbase/.Vastbase --non-interactive 2>&1" 2>&1 | tee /tmp/gauss_result_1405752_2025-07-21_13:22:19_199259_016.log. Error: [1] 13:28:18 [FAILURE] vdb4 Timed out, Killed by signal Signals.SIGKILL
07-22
### `compaction_max_memory_limit` 的配置与使用 在数据库和存储系统中,`compaction_max_memory_limit` 是一个用于控制合并操作(Compaction)所使用的最大内存大小的参数。该参数主要用于优化数据写入性能和读取效率,特别是在基于 LSM 树(Log-Structured Merge-Tree)结构的系统中,如 Apache HBase、RocksDB 和 Apache Doris。 #### 内存分配与影响 在某些系统中,总可用内存会根据不同的模块进行划分,以确保资源的合理利用。例如,在 Greenplum 数据库中,总可用内存计算方式如下: ``` total_node_usable_memory = RAM * (vm.overcommit_ratio / 100) + Swap ``` 假设系统的物理内存为 256GB,交换分区(Swap)为 64GB,而 `vm.overcommit_ratio` 设置为 50%,则总可用内存为: ``` total_node_usable_memory = 256GB * (50/100) + 64GB = 192GB ``` 在这种情况下,如果某个模块(如 Compaction)的内存限制设置为总可用内存的一定比例,则实际分配的内存大小将基于此值计算[^1]。 #### 配置建议 在配置 `compaction_max_memory_limit` 时,需要综合考虑以下因素: - **合并任务的频率**:高频的合并任务可能需要更高的内存限制,以避免频繁触发内存不足导致的任务失败。 - **数据写入负载**:高写入负载可能导致更多的 MemTable 切换和 SST 文件生成,从而增加合并操作的压力。 - **系统整体内存规划**:应与其他内存相关参数(如 `storage_page_cache_limit`、`load_process_max_memory_limit` 等)协调配置,防止内存争用问题。 在 Doris 中,该参数通常在 BE 节点的配置文件 `be.conf` 中进行设置: ```properties # 示例:设置合并任务的最大内存为 8GB compaction_max_memory_limit=8589934592 ``` 修改后需重启 BE 节点以使新配置生效。 #### 性能表现与调优 当合并任务使用的内存量超过 `compaction_max_memory_limit` 时,系统可能会拒绝进一步的操作,并返回类似以下错误信息: > "cache-max-memory-size exceeded: (%d/%d)", n, limit [^2] 这表明当前合并任务尝试使用的内存已超出设定上限,此时应考虑适当提高该参数值或优化数据写入模式。 此外,可以通过监控工具观察合并任务的执行情况,包括每次合并所耗时间、涉及的数据量以及是否频繁出现内存不足的情况。这些指标有助于判断当前的 `compaction_max_memory_limit` 是否合理。 #### 注意事项 - `compaction_max_memory_limit` 属于堆外内存管理范畴,其内存不计入 JVM 堆内存,因此不会受到 `-Xmx` 参数限制。 - 若设置过高的值,可能会导致其他关键模块无法获得足够内存,进而影响整体性能。 - 在多租户或资源隔离环境中,应结合资源组机制进行精细化内存控制。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值