vik*_*lik 8 java linux postgresql
我在PostgreSQL 9.1中使用了一个数据库,其中的条目是从另一个程序不断进入的.我在6秒后从Ajax发送请求以获取最新的entry.tomcat输出窗口显示异常---
Arval SQLException: FATAL: sorry, too many clients already
并且程序在此之后也正常工作.当我用查询检查我的postgres ---
select count(*) from pg_stat_activity;
它显示连接正在不断增加,但我在每次请求后关闭连接.我正在使用netbeans和struts 1.3.
     long previousSNO = Long.parseLong(request.getParameter("previousSNO"));
    if(previousSNO == 0)
    {
        sb.append("SELECT sno,search_type,search_value,search_date FROM log_temp ORDER BY search_date DESC LIMIT 20");
        prest = cb.executeSQLQuery(sb.toString());
        rs = prest.executeQuery();
    }
    else
    {
        sb.append("SELECT sno,search_type,search_value,search_date FROM log_temp WHERE sno > ? ORDER BY search_date DESC");
        prest = cb.executeSQLQuery(sb.toString());    
        prest.setLong(1, previousSNO);
        rs = prest.executeQuery();
    }
    rs.last();
    int c = rs.getRow();
    rs.beforeFirst();
    if(rs!=null && c>0)
    {    
    //code for making json resultsb from resultset here    
    rs.close();
    }
    cb.closeConnection();
    response.setContentType("text/plain");
    response.getWriter().print(resultsb.toString());
//和连接bean中的close方法是
    public void closeConnection() {
    try {
        // st.close();
        conn.close();
        System.out.println("con is closed");
        conn = null;
    } catch (SQLException e) {
        e.getMessage();
        System.out.println(e.getMessage());
        System.out.println("con is not closed");
    }
}
每次在控制台上打印"con is closed";
小智 19
要增加连接限制,您可能会喜欢以下文档.
该解决方案在ubuntu 12.04上进行了测试.
1.在postgresql.conf文件中进行以下更改:
打开 /etc/postgresql/9.1/main/postgresql.conf
max_connections = 200
shared_buffers = 100MB
max_files_per_process = 100
参考:shared_buffers大小应小于shmmax大小.
2.检查shmmax的命令:
$ sysctl -e kernel.shmmax
$ ipcs -l
3.增加shmmax的大小:
运行以下命令:
$ sysctl -w kernel.shmmax=134217728
$ sysctl -w kernel.shmall=2097152
并在/etc/sysctl.conf文件顶部写:
kernel.shmmax=134217728
kernel.shmall=2097152
4.重新启动postgresql
$ service postgresql restart
链接:
http://www.varlena.com/GeneralBits/Tidbits/perf.html
http://www.postgresql.org/docs/9.1/static/runtime-config-resource.html
Jay*_*yan 11
您可以增加 postgres中的max_connections,但这不是解决方案.你有资源泄漏.它可以是任何 - 连接未关闭,结果集未关闭.请返回并查看代码.
考虑使用连接池库,如c3p0/BoneCp
关于连接池的一般讨论在这里 (感谢@ sinisa229 mihajlovski)
| 归档时间: | 
 | 
| 查看次数: | 46213 次 | 
| 最近记录: |