greenplum 背景进程的启动

gdb 调试命令

gdb postgres
b ServerLoop
run -D "/home/citest/ci_test/data/master/gpseg-1" -p 5432 -E
b reaper
set follow-fork-mode child
c

调用的顺序是
main.c -> PostmasterMain -> ServerLoop -> pthread_sigmask -> StartChildProcess

PostmasterMain 中

  • pqsignal(SIGCHLD, reaper); 注册信号
  • load_auxiliary_libraries 注册 bgworker 启动函数
processentry
ftsprobe processFtsProbeMain启动
global deadlock detector processGlobalDeadLockDetectorMain
dtx recovery processDtxRecoveryMain启动
stats sender processSegmentInfoSenderMain
sweeper processBackoffSweeperMain
perfmon processPerfmonMain

ServerLoop 中

  • PG_SETMASK 分出子进程处理 SIGCHLD 信号,处理函数是 reaper,在第一次调用时会调用 StartChildProcess 启动各种背景进程

当有子进程挂了,postmaster 会收到 sigchld 信号,调用 reaper 中的 HandleChildCrash,清理所有子进程
在这里插入图片描述
再重新拉起所有子进程
在这里插入图片描述

附:

postmasterMain 进程:在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值