max_connections 最大连接数
默认值:100
确定数据库服务的最大连接数。
修改设置后,只能重启生效。
pg根据这个参数,直接调整某些资源的大小。
-
一般来说,连接数据库要使用连接池
-
使用连接池连接数据库有不通的模式:事务模式和会话模式
1. 会话模式(Session Mode)
- 特点:
- 连接在事务提交或回滚后不会被重用
- 每次新事务开始时都会获取新连接
- 保持更严格的事务隔离
- 适用于需要严格事务隔离的场景
- 适用场景:
- 需要严格事务隔离的应用
- 事务之间需要完全隔离的场景
- 使用保存点(SAVEPOINT)的应用
2. 事务模式(Transaction Mode)
- 特点:
- 连接在事务提交或回滚后会被重用
- 事务之间可以共享同一个连接
- 可能影响事务隔离级别
- 适用于高吞吐量应用
- 适用场景:
- 高性能应用
- 事务较短且频繁的场景
- 可以容忍事务之间轻微隔离的应用
- 特点:
-
事务模式,最大连接数应该为服务器核心的2-5倍(前提是整个服务器都是给数据库使用的)
-
会话模式下,设置为不能排队的并发用户数的最小值。
-
不使用连接池:设置为所需的并发用户数
-
如果设置过小:
- 拒绝连接
- 连接超时
- 并发处理能力差
- 资源利用率低
-
如果设置过大:
-
资源浪费
-
锁竞争加剧
- 慢查询:连接数增加时查询响应时间明显变长
- OOM Killer:系统可能因内存不足而终止 PostgreSQL 进程
- 连接超时:新连接建立变慢
- CPU 使用率上升:连接管理操作占用更多 CPU
-