重庆思庄Oracle、Redhat认证学习论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 282|回复: 0
打印 上一主题 下一主题

PG主进程 postmaster 的FORK

[复制链接]
跳转到指定楼层
楼主
发表于 2024-8-7 10:46:57 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
可以说,postmaster是PostgreSQL服务器端的总代理了。
通过它,把客户端的请求转给新生成的postgres 进程。
postmaster.c 的代码注释中有如下的描述:
When a request message is received, we now fork() immediately.The child process performs authentication of the request, and    then becomes a backend if successful.This allows the auth code to be written in a simple single-threaded style (as opposed to the crufty "poor man's multitasking" code that used to be needed).    More importantly, it ensures that blockages in non-multithreaded libraries like SSL or PAM cannot cause denial of service to other clients.

这个fork的方式是,只要有请求进来了,就fork一个进程。
然后,认证什么的都有这个进程自己来搞定。然后提出请求的客户端和这个postgres进程之间,该干嘛就干嘛。
每一对 客户端/postgres进程 和其他的 客户端/postgres进程之间互不干扰。

想想看,这么做确实有它的好处:
认证部分的代码可以尽量简化,不需要考虑锁定机制什么的。处理效率比较高,也没有排队什么的。
另外,如果一个postgres进程崩溃了,也不会影响另一个。

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 支持支持 反对反对
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|手机版|小黑屋|重庆思庄Oracle、Redhat认证学习论坛 ( 渝ICP备12004239号-4 )

GMT+8, 2024-12-27 07:18 , Processed in 0.092068 second(s), 19 queries .

重庆思庄学习中心论坛-重庆思庄科技有限公司论坛

© 2001-2020

快速回复 返回顶部 返回列表