5
在设置querytimeout参数后,有50%概率在sql执行到20s时候 timeout,不设置或设置为0则正常
在设置querytimeout参数后,有50%概率在sql执行到20s时候 timeout,不设置或设置为0则正常
那是因为的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);
}
}
设置的超时时间挺久的,远远大于20s,所以很疑惑为什么会在20s这个时间点上
这个参数是传递给了驱动->数据库的,所以得看驱动或数据库的行为。
感谢