401 Star 1.4K Fork 1.5K

GVPopenGauss / openGauss-server

 / 详情

【测试类型:gs_probackup备份功能】【测试版本:5.0.0】gs_probackup远程备份失败

已取消
缺陷
创建于  
2023-06-20 16:36

【操作系统】Centos
【数据库版本】openGauss 3.1.0
【问题描述】使用gs_probackup远程备份opengauss数据库时,报内存问题,备份失败
输入图片说明

评论 (5)

wx 创建了缺陷

Hey @wx, Welcome to openGauss Community.
All of the projects in openGauss Community are maintained by @opengauss_bot.
That means the developers can comment below every pull request or issue to trigger Bot Commands.
Please follow instructions at Here to find the details.

Hi @wx, please use the command /sig xxx to add a SIG label to this issue.
For example: /sig sqlengine or /sig storageengine or /sig om or /sig ai and so on.
You can find more SIG labels from Here.
If you have no idea about that, please contact with @zhangxubo , @xiangxinyong .

jiexiao1413 优先级设置为次要
jiexiao1413 负责人设置为周斌
周斌 添加协作者周斌
周斌 负责人周斌 修改为吴岳川
周斌 取消协作者周斌
周斌 添加协作者周斌
周斌 添加协作者pengjiong
周斌 取消协作者周斌

相关可能原因:可能是内存不足或者进程数超限导致。
排查:

  1. 查看系统内存使用率是否过高,确定内存不足后禁用内存占用较多的无关服务或者添加内存。
    1. top
    2. free -m
  2. 查看 /var/log/message 是否存在 oom 的记录。
grep "Out of memory" /var/log/messages
  1. 核实总进程数是否超限,并修改总进程数 pid_max 配置。
sysctl kernel.pid_max
pstree -p | wc -l 

相关问题请自行排查

pengjiong 计划开始日期设置为2023-06-25
pengjiong 计划截止日期设置为2023-06-27
吴岳川 组织设置为操作系统,CCB评审,继续分析

此处的fork是有必要的。openGauss的pg_probackup工具,在执行远程备份时,需要在远端创建probackup agent进程,此处通过fork的方式,调用execvp接口,在远端启动agent线程。

我们需要远程执行二进制文件,需要类似有环境变量等方式,直接采用fork+execvp的方式,相对简单,调用后,本身进程占用内存也会被销毁。(函数在执行可执行文件时,会直接替换当前进程的代码和数据,这样可以保证执行的可执行文件与当前进程的环境完全一致,执行结果更加可靠。)
除此之外,启动后在需要远程备份时即会调用fork函数,本身占用内存较小。debug版本调试,在fork时内存大小仅大概在8M左右。

关于fork内存拷贝问题:操作系统通常会使用写时复制(Copy-On-Write,COW)技术来优化这一过程。在COW机制下,当父进程或子进程尝试修改它们的内存时,操作系统会立即复制该内存页,并将其分配给相应的进程,这样父进程和子进程之间的内存就不再共享了。这种机制可以减少内存的消耗,因为只有在需要时才会进行内存复制。
我们仅fork线程,没有对内存作过多修改。

Will 取消协作者pengjiong
吴岳川 组织操作系统,CCB评审,继续分析 修改为没有找到负责人
吴岳川 任务状态待办的 修改为已取消

登录 后才可以发表评论

状态
负责人
项目
里程碑
Pull Requests
关联的 Pull Requests 被合并后可能会关闭此 issue
分支
开始日期   -   截止日期
-
置顶选项
优先级
预计工期 (小时)
参与者(3)
13084139 opengauss bot 1686829535
C++
1
https://gitee.com/opengauss/openGauss-server.git
git@gitee.com:opengauss/openGauss-server.git
opengauss
openGauss-server
openGauss-server

搜索帮助

53164aa7 5694891 3bd8fe86 5694891