[alibaba/druid]druid1.2.16,数据库intersystems iris

2025-11-05 129 views
5

在设置querytimeout参数后,有50%概率在sql执行到20s时候 timeout,不设置或设置为0则正常

回答

5

那是因为的sql执行20秒都还没执行出结果来,自然会触发超时,属于正常现象,想设置这个参数为20,就得确保业务逻辑sq执行耗时不要超过20秒。

  void initStatement(DruidPooledConnection conn, Statement stmt) throws SQLException {
        boolean transaction = !conn.getConnectionHolder().underlyingAutoCommit;

        int queryTimeout = transaction ? getTransactionQueryTimeout() : getQueryTimeout();

        if (queryTimeout > 0) {
            stmt.setQueryTimeout(queryTimeout);
        }
    }
8

设置的超时时间挺久的,远远大于20s,所以很疑惑为什么会在20s这个时间点上

1

这个参数是传递给了驱动->数据库的,所以得看驱动或数据库的行为。

6

感谢