How to close inactive connections in Postgres
Postgres 9.1服务器在Debian下运行。
它由Mono MVC4 Web应用程序使用ngpsql,Apache和mod_mono访问。
它也可以在每晚由同一台计算机上的pg_dump访问,也可以从互联网上的5432端口访问。
连接在6月20日被清除。
pgAdmin statuc窗口显示从这天开始的大量空闲连接。
(见下图)。
一段时间后,连接数达到100,服务器停止接受连接。需要在pgAdmin中手动终止连接。只有在该服务器再次开始接受连接之后。
有趣的是,其中一些连接的开始时间与图像中显示的完全相同。
如何解决或诊断问题?
我试过
如何自动关闭空闲连接或找到打开连接的原因?也许有一些postgres或Debian设置会自动关闭空闲连接?
运用
"在x86_64-unknown-linux-gnu上的PostgreSQL 9.1.2,由gcc-4.4 .real编译(Debian 4.4.5-8)4.4.5,64位"
更新
Application使用以下连接字符串:
1 2 3 4 5 6 7 8 9 10 11 12 | 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 }; |
看看这篇文章是否有空闲的PostgreSQL连接超时?
并考虑在数据库前使用pgbouncer。