如何关闭 Postgres 中的非活动连接
How to close inactive connections in Postgres
Postgres 9.1 服务器在 Debian 下 运行。
它由使用 ngpsql、Apache 和 mod_mono 的 Mono MVC4 Web 应用程序访问。
pg_dump 每晚也在同一台计算机上从互联网的 5432 端口访问它。
连接已于 6 月 20 日清除。
pgAdmin statuc window 显示从今天开始有很多空闲连接。
(见下图)。
一段时间后,连接数达到 100,服务器停止接受连接。需要在 pgAdmin 中手动终止连接。只有在该服务器再次开始接受连接之后。
有趣的是,其中一些连接的开始时间与图像中显示的完全相同。
如何解决或诊断问题?
我试过了 /etc/init.d/apache2 restart
。这关闭了 6 月 25 日和 27 日的连接,但 6 月 20 日的连接仍然打开。
如何自动关闭空闲连接或查找打开连接的原因?也许有一些 postgres 或 Debian 设置会自动关闭空闲连接?
使用
"PostgreSQL 9.1.2 on x86_64-unknown-linux-gnu, compiled by gcc-4.4.real (Debian 4.4.5-8) 4.4.5, 64-bit"
更新
应用程序使用以下连接字符串:
NpgsqlConnectionStringBuilder csb = new NpgsqlConnectionStringBuilder()
{
SearchPath = schema == null ? "public" : schema + ",public",
Timeout = 115,
CommandTimeout = 115,
Host = Config.Server,
Database = Config.DefaultDataBase,
UserName = Config.ServerUser,
Port = Config.Port,
// Apache allows 150 connections, MaxPoolSize is set accordingly:
MaxPoolSize = 155
};
看看这个 post Is there a timeout for idle PostgreSQL connections?
并考虑在您的数据库前使用 pgbouncer。
Postgres 9.1 服务器在 Debian 下 运行。 它由使用 ngpsql、Apache 和 mod_mono 的 Mono MVC4 Web 应用程序访问。 pg_dump 每晚也在同一台计算机上从互联网的 5432 端口访问它。 连接已于 6 月 20 日清除。 pgAdmin statuc window 显示从今天开始有很多空闲连接。 (见下图)。
一段时间后,连接数达到 100,服务器停止接受连接。需要在 pgAdmin 中手动终止连接。只有在该服务器再次开始接受连接之后。
有趣的是,其中一些连接的开始时间与图像中显示的完全相同。
如何解决或诊断问题?
我试过了 /etc/init.d/apache2 restart
。这关闭了 6 月 25 日和 27 日的连接,但 6 月 20 日的连接仍然打开。
如何自动关闭空闲连接或查找打开连接的原因?也许有一些 postgres 或 Debian 设置会自动关闭空闲连接?
"PostgreSQL 9.1.2 on x86_64-unknown-linux-gnu, compiled by gcc-4.4.real (Debian 4.4.5-8) 4.4.5, 64-bit"
更新
应用程序使用以下连接字符串:
NpgsqlConnectionStringBuilder csb = new NpgsqlConnectionStringBuilder()
{
SearchPath = schema == null ? "public" : schema + ",public",
Timeout = 115,
CommandTimeout = 115,
Host = Config.Server,
Database = Config.DefaultDataBase,
UserName = Config.ServerUser,
Port = Config.Port,
// Apache allows 150 connections, MaxPoolSize is set accordingly:
MaxPoolSize = 155
};
看看这个 post Is there a timeout for idle PostgreSQL connections?
并考虑在您的数据库前使用 pgbouncer。