AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / dba / 问题 / 298083
Accepted
Eranga Heshan
Eranga Heshan
Asked: 2021-08-16 21:10:38 +0800 CST2021-08-16 21:10:38 +0800 CST 2021-08-16 21:10:38 +0800 CST

“server_lifetime”和“server_idle_timeout”有什么区别?

  • 772

我正在尝试pgbouncer.ini在 Pgbouncer 中调整我的文件,并提出了server_lifetime我server_idle_timeout感觉相同的参数。

在官方配置文档中它说:

server_lifetime

pooler 将关闭连接时间超过此时间的未使用的服务器连接。将其设置为 0 意味着连接将只使用一次,然后关闭。[秒]

默认值:3600.0

server_idle_timeout

如果服务器连接空闲超过这么多秒,它将被丢弃。如果为 0,则禁用超时。[秒]

默认值:600.0

你能帮我简单理解一下区别吗?提前致谢!!!?

postgresql pgbouncer
  • 1 1 个回答
  • 866 Views

1 个回答

  • Voted
  1. Best Answer
    Melkij
    2021-08-17T03:48:29+08:002021-08-17T03:48:29+08:00

    Pgbouncer 将server_lifetime根据pool_mode. 想象一个恒定负载下的池。如果没有server_lifetime,pgbouncer 将打开 N 个服务器连接并使用它们数月。这不是那么糟糕,但并不总是可取的。在某些情况下,数据库服务器进程会随着时间的推移占用越来越多的内存(存储过程的缓存、准备好的语句等)。server_lifetime 将在应用程序不知道的情况下关闭旧的服务器连接(如果需要,稍后将建立新的服务器连接)。无论连接有多活跃,都会发生这种情况。

    另一方面,server_idle_timeout将关闭在此期间客户端未使用的与服务器的连接。用例:通常几个到服务器的连接对于这个池来说就足够了。但有时我们有一个活动高峰,我们会打开 50 个连接。当我们处理这个峰值时,不再需要这些额外的连接,我们只需要其中的几个。server_idle_timeout允许您关闭超过指定时间未使用的服务器连接。server_lifetime也将关闭此类不需要的连接,但单独的server_idle_timeout选项将允许设置更短的间隔。


    Pgbouncer 认为unused server connection它与空闲连接有何不同?

    从 pgbouncer 的角度来看,未使用的连接是当前未链接到任何客户端连接的连接。这与pool_mode以下内容有关:

    • 在池模式statement中,服务器连接仅在查询执行期间与客户端链接(并且“使用”)。
    • 在池模式transaction中,服务器连接在事务进行时链接到某个客户端。
    • 在池模式下session,客户端连接链接到服务器连接,直到客户端断开连接。

    因此,idle就 postgresql 视图而言,连接pg_stat_activity将unused处于池模式statement或transaction. 但在池模式下未知session- pgbouncer 可以等待来自客户端的进一步命令(因此服务器连接idle用于 postgresql,但used用于 pgbouncer)或者此连接当前未分配给任何人(unused对于 pgbouncer,但idle对于 postgresql 相同)

    严格来说,来自 pgbouncer 的服务器连接可以处于以下状态之一:

    • active- 链接到客户端的服务器连接。
    • idle- 未使用且可立即用于客户端查询的服务器连接。
    • used- 空闲时间超过 server_check_delay 的服务器连接,因此需要在它们上运行 server_check_query 才能再次使用它们。
    • tested- 当前正在运行 server_reset_query 或 server_check_query 的服务器连接。
    • login- 当前正在登录的服务器连接。

    (没有很好的记录,见SHOW POOLS描述)

    used中的连接tested和idle状态在此处检查server_lifetime 条件并在此处调用。这是对从active/ used/tested到idle状态的转换的额外检查。或状态中used的服务器连接受到或超时。因此,这些超时不会影响客户端。testedidleserver_lifetimeserver_idle_timeout

    • 4

相关问题

  • 我可以在使用数据库后激活 PITR 吗?

  • 运行时间偏移延迟复制的最佳实践

  • 存储过程可以防止 SQL 注入吗?

  • PostgreSQL 中 UniProt 的生物序列

  • PostgreSQL 9.0 Replication 和 Slony-I 有什么区别?

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    连接到 PostgreSQL 服务器:致命:主机没有 pg_hba.conf 条目

    • 12 个回答
  • Marko Smith

    如何让sqlplus的输出出现在一行中?

    • 3 个回答
  • Marko Smith

    选择具有最大日期或最晚日期的日期

    • 3 个回答
  • Marko Smith

    如何列出 PostgreSQL 中的所有模式?

    • 4 个回答
  • Marko Smith

    列出指定表的所有列

    • 5 个回答
  • Marko Smith

    如何在不修改我自己的 tnsnames.ora 的情况下使用 sqlplus 连接到位于另一台主机上的 Oracle 数据库

    • 4 个回答
  • Marko Smith

    你如何mysqldump特定的表?

    • 4 个回答
  • Marko Smith

    使用 psql 列出数据库权限

    • 10 个回答
  • Marko Smith

    如何从 PostgreSQL 中的选择查询中将值插入表中?

    • 4 个回答
  • Marko Smith

    如何使用 psql 列出所有数据库和表?

    • 7 个回答
  • Martin Hope
    Jin 连接到 PostgreSQL 服务器:致命:主机没有 pg_hba.conf 条目 2014-12-02 02:54:58 +0800 CST
  • Martin Hope
    Stéphane 如何列出 PostgreSQL 中的所有模式? 2013-04-16 11:19:16 +0800 CST
  • Martin Hope
    Mike Walsh 为什么事务日志不断增长或空间不足? 2012-12-05 18:11:22 +0800 CST
  • Martin Hope
    Stephane Rolland 列出指定表的所有列 2012-08-14 04:44:44 +0800 CST
  • Martin Hope
    haxney MySQL 能否合理地对数十亿行执行查询? 2012-07-03 11:36:13 +0800 CST
  • Martin Hope
    qazwsx 如何监控大型 .sql 文件的导入进度? 2012-05-03 08:54:41 +0800 CST
  • Martin Hope
    markdorison 你如何mysqldump特定的表? 2011-12-17 12:39:37 +0800 CST
  • Martin Hope
    Jonas 如何使用 psql 对 SQL 查询进行计时? 2011-06-04 02:22:54 +0800 CST
  • Martin Hope
    Jonas 如何从 PostgreSQL 中的选择查询中将值插入表中? 2011-05-28 00:33:05 +0800 CST
  • Martin Hope
    Jonas 如何使用 psql 列出所有数据库和表? 2011-02-18 00:45:49 +0800 CST

热门标签

sql-server mysql postgresql sql-server-2014 sql-server-2016 oracle sql-server-2008 database-design query-performance sql-server-2017

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve