PostgreSQL修改最大连接数

本文涉及的产品
Redis 开源版,标准版 2GB
推荐场景:
搭建游戏排行榜
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
简介: 在使用PostgreSQL时,可能遇到“too many clients already”错误,这是由于默认最大连接数(100)不足。要增加此数值,需修改`postgresql.conf`中的`max_connections`参数

在使用PostgreSQL的时候,经常会遇到这样的错误提示, sorry, too many clients already,这是因为默认PostgreSQL最大连接数是 100, 一般情况下,个人使用时足够的,但是在生产环境,这个连接数是远远不够的;

修改最大连接数

要修改 PostgreSQL 的最大连接数,可以按照以下步骤进行操作:

打开PostgreSQL配置文件

配置文件的路径可能因操作系统和 PostgreSQL 版本而异。以下是一些常见的配置文件路径:

  • Ubuntu/Debian:/etc/postgresql/<version>/main/postgresql.conf
  • CentOS/RHEL:/var/lib/pgsql/<version>/data/postgresql.conf
  • macOS Homebrew 安装:/usr/local/var/postgres/postgresql.conf

打开配置文件并找到 max_connections 参数。

修改最大连接数

在配置文件中找到 max_connections 参数,并将其值修改为所需的最大连接数。例如,将最大连接数设置为 1000,可以将以下行添加到配置文件中:

ini

代码解读

复制代码

max_connections = 1000

保存配置文件。

重启 PostgreSQL 服务

保存配置文件后,需要重启 PostgreSQL 服务才能使修改生效。

可以使用以下命令重启 PostgreSQL 服务:

代码解读

复制代码

sudo service postgresql restart

或者,根据不同的操作系统和安装方式,可能需要使用其他命令来重启 PostgreSQL 服务。

如果是使用Docker 的方式启动的 PostgreSQL , 需要通过一下命令重启 Docker 服务:

xml

代码解读

复制代码

docker restart <postgresql_docker_name>

验证修改是否生效

重启 PostgreSQL 服务后,可以使用以下命令来验证最大连接数是否已经修改:

arduino

代码解读

复制代码

psql -U <username> -c "SHOW max_connections;"

<username> 替换为实际的 PostgreSQL 用户名。该命令将显示当前的最大连接数。

如果可以通过Navicat直接连接到 PostgreSQL ,可以直接新建查询窗口查询:

ini

代码解读

复制代码

SHOW max_connections;

请注意,修改最大连接数可能会影响系统的性能和资源使用情况。在增加最大连接数之前,请确保系统具有足够的资源来支持所需的连接数,并考虑数据库服务器的硬件配置和负载情况。

修改操作系统文件描述符限制

在某些情况下,可能存在其他配置项的限制,导致 max_connections 的修改不生效。例如,操作系统的文件描述符限制(ulimit)可能会限制 PostgreSQL 的最大连接数。

可以通过以下命令查看当前的文件描述符限制:

bash

代码解读

复制代码

ulimit -n

如果文件描述符限制较低,可以尝试增加限制。具体的操作方法可以参考操作系统的文档或相关资源。

要修改操作系统的 ulimit 最大值,可以按照以下步骤进行操作:

查看当前的 ulimit 最大值

可以使用以下命令查看当前的 ulimit 最大值:

bash

代码解读

复制代码

ulimit -a

这将显示当前的 ulimit 配置,包括最大文件描述符数、最大用户进程数等。

临时修改 ulimit 最大值

可以使用以下命令临时修改 ulimit 最大值:

bash

代码解读

复制代码

ulimit -n <new_value>

其中 <new_value> 是要设置的新的最大值。例如,要将最大文件描述符数设置为 65536;

可以运行以下命令:

bash

代码解读

复制代码

ulimit -n 65536

注意,这种方式修改的最大值只在当前会话中有效,重新登录后将恢复为默认值。

永久修改 ulimit 最大值

要永久修改 ulimit 最大值,需要编辑系统的配置文件。具体的配置文件路径可能因操作系统而异。以下是一些常见的配置文件路径:

  • Ubuntu/Debian:/etc/security/limits.conf
  • CentOS/RHEL:/etc/security/limits.conf
  • macOS:/etc/launchd.conf

打开配置文件,并添加或修改以下行:

markdown

代码解读

复制代码

* hard nofile <new_value>
* soft nofile <new_value>
* hard nproc <new_value>
* soft nproc <new_value>

其中 <new_value> 是要设置的新的最大值。

例如,所有用户的硬/软限制(soft limit)文件描述符数设置为 65536,所有用户的硬/软限制进程数设置为 65536,可以添加以下行:

markdown

代码解读

复制代码

* hard nofile 65536
* soft nofile 65536
* hard nproc 65536
* soft nproc 65536
  • 代表针对所有用户

noproc 是代表最大进程数

nofile 是代表最大文件打开数

  1. 保存文件并重新启动系统,使修改生效:
  2. 代码解读
  3. 复制代码
reboot
  1. 验证修改是否生效:
    重新登录系统后,可以再次运行 ulimit -n 命令来验证修改是否生效。确保最大值已经更新为所设置的新值。

请注意,修改操作系统的 ulimit 最大值可能需要管理员权限。在进行任何系统级别的修改之前,请确保了解修改的影响,并备份重要的配置文件。

查询数据库连接情况

除以上使用 SHOW max_connections; 查看PostgreSQL的最大连接数, 这里也整理了一些常用的

查询数据库配置的最大连接数

csharp

代码解读

复制代码

select setting from pg_catalog.pg_settings where "name" ='max_connections';

查询数据库当前连接信息

sql

代码解读

复制代码

select datname ,pid ,usename ,query_start ,wait_event ,wait_event_type ,state ,query from pg_catalog.pg_stat_activity order by query_start desc ;

根据进程 ID 取消正在执行的查询

csharp

代码解读

复制代码

select pg_cancel_backend(pid);

根据进程 ID 终止指定的连接

csharp

代码解读

复制代码

select pg_terminate_backend(pid);

根据进程 ID 获取连接的详细信息

csharp

代码解读

复制代码

select pg_stat_get_activity(pid);

查询当前使用的连接数

csharp

代码解读

复制代码

select count(*) from pg_catalog.pg_stat_activity ;

查询当前空余连接数

sql

代码解读

复制代码

select setting::int2 -(select count(*) from pg_catalog.pg_stat_activity) from pg_catalog.pg_settings where "name

转载来源:https://juejin.cn/post/7366185272767348755

相关实践学习
使用PolarDB和ECS搭建门户网站
本场景主要介绍基于PolarDB和ECS实现搭建门户网站。
阿里云数据库产品家族及特性
阿里云智能数据库产品团队一直致力于不断健全产品体系,提升产品性能,打磨产品功能,从而帮助客户实现更加极致的弹性能力、具备更强的扩展能力、并利用云设施进一步降低企业成本。以云原生+分布式为核心技术抓手,打造以自研的在线事务型(OLTP)数据库Polar DB和在线分析型(OLAP)数据库Analytic DB为代表的新一代企业级云原生数据库产品体系, 结合NoSQL数据库、数据库生态工具、云原生智能化数据库管控平台,为阿里巴巴经济体以及各个行业的企业客户和开发者提供从公共云到混合云再到私有云的完整解决方案,提供基于云基础设施进行数据从处理、到存储、再到计算与分析的一体化解决方案。本节课带你了解阿里云数据库产品家族及特性。
相关文章
|
关系型数据库 PostgreSQL
解决Navicat连接postgresql时出现‘datlastsysoid does not exist‘报错
解决Navicat连接postgresql时出现‘datlastsysoid does not exist‘报错
1452 0
|
2月前
|
关系型数据库 数据库 PostgreSQL
深入理解 PostgreSQL 的 JOIN 连接
深入理解 PostgreSQL 的 JOIN 连接
161 4
|
4月前
|
SQL 关系型数据库 数据库
PostgreSQL常用命令,启动连接,pg_dump导入导出
PostgreSQL常用命令,启动连接,pg_dump导入导出
|
5月前
|
JavaScript 关系型数据库 API
Nest.js 实战 (二):如何使用 Prisma 和连接 PostgreSQL 数据库
这篇文章介绍了什么是Prisma以及如何在Node.js和TypeScript后端应用中使用它。Prisma是一个开源的下一代ORM,包含PrismaClient、PrismaMigrate、PrismaStudio等部分。文章详细叙述了安装PrismaCLI和依赖包、初始化Prisma、连接数据库、定义Prisma模型、创建Prisma模块的过程,并对比了Prisma和Sequelize在Nest.js中的使用体验,认为Prisma更加便捷高效,没有繁琐的配置。
216 7
Nest.js 实战 (二):如何使用 Prisma 和连接 PostgreSQL 数据库
|
4月前
|
关系型数据库 MySQL 数据库
postgresql使用mysql_fdw连接mysql
通过以上步骤,你可以在PostgreSQL中访问和查询远程MySQL服务器的数据,这对于数据集成和多数据库管理非常有用。
315 0
|
5月前
|
分布式计算 DataWorks 关系型数据库
DataWorks操作报错合集之使用连接串模式新增PostgreSQL数据源时遇到了报错"not support data sync channel, error code: 0001",该怎么办
DataWorks是阿里云提供的一站式大数据开发与治理平台,支持数据集成、数据开发、数据服务、数据质量管理、数据安全管理等全流程数据处理。在使用DataWorks过程中,可能会遇到各种操作报错。以下是一些常见的报错情况及其可能的原因和解决方法。
|
4月前
|
SQL 关系型数据库 数据库
EF Core连接PostgreSQL数据库
EF Core连接PostgreSQL数据库
66 0
|
7月前
|
SQL JSON 关系型数据库
[UE虚幻引擎插件DTPostgreSQL] PostgreSQL Connector 使用蓝图连接操作 PostgreSQL 数据库说明
本插件主要是支持在UE蓝图中连接和操作PostgreSQL 数据库。
71 2
|
SQL 关系型数据库 数据库
postgresql中连接两张表更新第三张表(updata)
如何结合两张表的数据来更新第三张表
362 0
|
7月前
|
关系型数据库 Java 数据库
docker部署postgresql数据库和整合springboot连接数据源
docker部署postgresql数据库和整合springboot连接数据源
169 0