关于apache:如何关闭Postgres中的非活动连接

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中手动终止连接。只有在该服务器再次开始接受连接之后。

有趣的是,其中一些连接的开始时间与图像中显示的完全相同。
如何解决或诊断问题?
我试过/etc/init.d/apache2 restart。 6月25日和27日关闭,但6月20日的连接仍然开放。

如何自动关闭空闲连接或找到打开连接的原因?也许有一些postgres或Debian设置会自动关闭空闲连接?

open
运用

"在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。