Postgres 9.1服务器在Debian下运行。 它由Mono MVC4 Web应用程序使用ngpsql,Apache和mod_mono访问。 它也可以在每晚由同一台计算机上的pg_dump访问,也可以从互联网上的5432端口访问。 连接在6月20日被清除。 pgAdmin statuc窗口显示从这天开始的大量空闲连接。 (见下图)。
经过一段时间后,连接数达到100,服务器停止接受连接。需要在pgAdmin中手动终止连接。只有在该服务器再次开始接受连接之后。
有趣的是,其中一些连接的开始时间与图像中显示的完全相同。
如何解决或诊断问题?
我试过了/etc/init.d/apache2 restart
。关闭了6月25日和27日的连接,但6月20日的连接仍然开放。
如何自动关闭空闲连接或找到打开连接的原因?也许有一些postgres或Debian设置会自动关闭空闲连接?
使用
"在x86_64-unknown-linux-gnu上的PostgreSQL 9.1.2,由gcc-4.4 .real编译(Debian 4.4.5-8)4.4.5,64位"
更新
应用程序使用以下连接字符串:
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
};