没有合适的资源?快使用搜索试试~ 我知道了~
首页PostgreSQL pg_ctl start启动超时实例分析
PostgreSQL pg_ctl start启动超时实例分析
7 下载量 64 浏览量
更新于2023-03-16
评论
收藏 60KB PDF 举报
一、问题 pg_ctl start启动时报错退出:pg_ctl:server did not start in time。超时时间是多少?从什么时候到哪个阶段算超时? 二、分析:该信息打印位置,从后面代码段do_start函数中可以看出 1、pg_ctl start调用start_postmaster启动PG的主进程后,每隔0.1ms检查一次postmaster.pid文件,是否已写入ready/standby 2、总共会检查600次,即从启动主进程后,最多等待60s,如果没有写入ready/standby则打印上述日志并退出 3、默认等待时间是60s,如果pg_ctl start -
资源详情
资源评论
资源推荐
PostgreSQL pg_ctl start启动超时实例分析启动超时实例分析
一、问题一、问题
pg_ctl start启动时报错退出:pg_ctl:server did not start in time 。超时时间是多少?从什么时候到哪个阶段算超时?
二、分析:该信息打印位置,从后面代码段二、分析:该信息打印位置,从后面代码段do_start函数中可以看出函数中可以看出
1、pg_ctl start调用start_postmaster启动PG的主进程后,每隔0.1ms检查一次postmaster.pid文件,是否已写入ready/standby
2、总共会检查600次,即从启动主进程后,最多等待60s,如果没有写入ready/standby则打印上述日志并退出
3、默认等待时间是60s,如果pg_ctl start -t指定等待时间,则等待时间为该指定时间
三、什么时候三、什么时候postmaster.pid文件写入文件写入ready/standby
1、如果是主机不管有没有设置、如果是主机不管有没有设置hot standby
1)当startup进程恢复完成退出时,调用proc_exit函数向主进程发送SIGCHLD信号并退出
2)主进程接收到信号后,signal处理函数reaper调用AddToDataDirLockFile向postmaster.pid文件写入ready
2、如果是备机即、如果是备机即data目录下有目录下有recovery.cnf文件,且设置了文件,且设置了hot standby,在实际恢复前没有到达一致性位置,在实际恢复前没有到达一致性位置
1)startup进程向主进程发送PMSIGNAL_RECOVERY_STARTED信号,主进程调用信号处理函数sigusr1_handler,将
pmState=PM_RECOVERY
2)每次读取下一个xlog前都会调用CheckRecoveryConsistency函数进行一致性检查:
2.1 进入一致性状态,starup进程向主进程发送PMSIGNAL_BEGIN_HOT_STANDBY信号,主进程接收到信号后调用
sigusr1_handler->AddToDataDirLockFile向postmaster.pid文件写入ready
3、如果是备机即、如果是备机即data目录下有目录下有recovery.cnf文件,且设置了文件,且设置了hot standby,在实际恢复前没有到达一致性位置,在实际恢复前没有到达一致性位置
1)startup进程向主进程发送PMSIGNAL_RECOVERY_STARTED信号,主进程调用信号处理函数sigusr1_handler,将
pmState=PM_RECOVERY
2)每次读取下一个xlog前都会调用CheckRecoveryConsistency函数进行一致性检查。如果没有进入一致性状态
3)本地日志恢复完成,切换日志源时同样调用CheckRecoveryConsistency函数进行一致性检查
3.1 进入一致性状态,starup进程向主进程发送PMSIGNAL_BEGIN_HOT_STANDBY信号,主进程接收到信号后调用
sigusr1_handler->AddToDataDirLockFile向postmaster.pid文件写入ready
4、如果是备机即、如果是备机即data目录下有目录下有recovery.cnf文件,且设置了文件,且设置了hot standby,在实际恢复前到达一致性位置,在实际恢复前到达一致性位置
1)startup进程向主进程发送PMSIGNAL_RECOVERY_STARTED信号,主进程调用信号处理函数sigusr1_handler,将
pmState=PM_RECOVERY
2)CheckRecoveryConsistency函数进行一致性检查,向主进程发送PMSIGNAL_BEGIN_HOT_STANDBY信号,主进程接收
到信号后调用sigusr1_handler->AddToDataDirLockFile向postmaster.pid文件写入ready
5、如果是备机即、如果是备机即data目录下有目录下有recovery.cnf文件,没有设置文件,没有设置hot standby
1)startup进程向主进程发送PMSIGNAL_RECOVERY_STARTED信号
2)主进程接收到信号后,向postmaster.将pmState=PM_RECOVERY
四、代码分析四、代码分析
1、、pg_ctl start流程流程
do_start->
pm_pid = start_postmaster();
if (do_wait){
print_msg(_("waiting for server to start..."));
switch (wait_for_postmaster(pm_pid, false)){
case POSTMASTER_READY:
print_msg(_(" done"));
print_msg(_("server started"));
break;
case POSTMASTER_STILL_STARTING:
weixin_38728347
- 粉丝: 4
- 资源: 912
上传资源 快速赚钱
- 我的内容管理 收起
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
会员权益专享
最新资源
- RTL8188FU-Linux-v5.7.4.2-36687.20200602.tar(20765).gz
- c++校园超市商品信息管理系统课程设计说明书(含源代码) (2).pdf
- 建筑供配电系统相关课件.pptx
- 企业管理规章制度及管理模式.doc
- vb打开摄像头.doc
- 云计算-可信计算中认证协议改进方案.pdf
- [详细完整版]单片机编程4.ppt
- c语言常用算法.pdf
- c++经典程序代码大全.pdf
- 单片机数字时钟资料.doc
- 11项目管理前沿1.0.pptx
- 基于ssm的“魅力”繁峙宣传网站的设计与实现论文.doc
- 智慧交通综合解决方案.pptx
- 建筑防潮设计-PowerPointPresentati.pptx
- SPC统计过程控制程序.pptx
- SPC统计方法基础知识.pptx
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
评论0