Appengine:连接错误太多

时间:2014-09-29 11:56:48

标签: java sql-server google-app-engine google-cloud-sql

我正在使用带有云sql的应用引擎,
最近我通过此消息在我的app-engine错误日志中加了一脚

java.sql.SQLException: Too many connections at com.google.cloud.sql.jdbc.internal.E...

我在这里看到了许多相关的问题,但没有一个给出具体的解决方案。 我在我的应用程序中完成了一个简单的servlet智能池,如下所示,我想实现一个比这更好的解决方案

private java.sql.Connection con = null;

@Override
public void init() throws ServletException {
    con = new DbTransaction().getConnection();
}




public void doProcess(HttpServletRequest req, HttpServletResponse resp)
                throws IOException {
// Doing my task here
}



@Override
public void destroy() {
    try {
        con.close();
    } catch (SQLException e) {
        Logger.getLogger(ReceiveFeedDetails.class.getName()).log(
                Level.SEVERE,
                "SQL Ex  con.close>> Connection Object:" + con, e);

    } catch (Exception e) {
        Logger.getLogger(ReceiveFeedDetails.class.getName()).log(
                Level.SEVERE,
                "Exception con.close>> Connection Object:" + con, e);

    }
}

这是我的连接方法

    public Connection getConnection() {



    Connection con = null;
    try {
        DriverManager.registerDriver(new AppEngineDriver());
    } catch (SQLException e1) {
        Logger.getLogger(ReceiveSignupDetails.class.getName()).log(
                Level.SEVERE, null, e1);
        // e1.printStackTrace();
    }
    try {
        con = DriverManager.getConnection(Configuration.CLOUD_SQL_INSTANCE);
    } catch (SQLException e) {
        Logger.getLogger(ReceiveSignupDetails.class.getName()).log(
                Level.SEVERE, null, e);
    }
    return con;

}

我的代码中是否有任何问题..
如何改善连接池...
请分享您的想法,如果有任何更好的连接池样本可用,
任何链接或示例代码请帮助......

1 个答案:

答案 0 :(得分:1)

我认为你需要使用debug / profile代码来查找创建了多少连接。 如您所示,我发现您希望为每个servlet创建一个连接。 - 你有多少个servlet? - 同时运行多少个appengine实例

连接数= servlets *正在运行的实例 它必须是<< 250