PostgreSQL和Pgpool-II的连接数和进程数

PostgreSQL 的连接数:max_connections

最大连接数:PostgreSQL能够同时拥有的最大客户端连接数。
需要根据服务器的内存和CPU资源适当进行设置。
如果连接数过多,将对系统资源造成负担;如果连接数过少,可能导致无法在需要时进行连接。

Pgpool-II 的配置:num_init_children、max_pool。

num_init_children: Pgpool-II在启动时生成的进程数量。这个数量决定了它能够接受的客户端连接数。
max_pool: 单个Pgpool-II进程能够拥有的PostgreSQL连接池的数量。对于单个客户端连接,可以重复使用多个PostgreSQL连接。

将 max_connections 的值设置为 num_init_children 乘以 max_pool 的结果所得的值。

API客户端 -> Pgpool-Ⅱ -> PostgreSQL 连接和流程

    1. 首先,API客户端开始与数据库建立连接。

 

    1. 这个连接是通过Pgpool来进行的。也就是说,客户端不直接连接到PostgreSQL,而是连接到Pgpool。

Pgpool进程和连接池
Pgpool在启动时生成与num_init_children相等数量的子进程。这些子进程等待客户端的连接。
当客户端请求连接时,Pgpool会将连接分配给其中的一个子进程。
每个子进程可以持有max_pool数量的连接到PostgreSQL。这些连接称为”连接池”,用于有效处理多个客户端请求。

连接到PostgreSQL
通过Pgpool进行连接后,Pgpool子进程会建立与PostgreSQL的连接。
PostgreSQL的max_connections定义了可同时接受的最大连接数,包括通过Pgpool进行的连接。

数据处理与响应
API客户端通过Pgpool发送数据库查询。
Pgpool会将这些查询路由到适当的PostgreSQL连接,并将结果返回给客户端。

连接数和内存之间的关系

    • PostgreSQL のコネクションごとにメモリが割り当てられる。したがって、max_connections を増やすとその分だけメモリ使用量が増加する。

 

    Pgpool-II も同様に、num_init_children と max_pool を増やすと、それぞれの子プロセスと接続プールにメモリが必要になる。
广告
将在 10 秒后关闭
bannerAds