Хотите получить последние несколько строк файла журнала?
tail /var/log/syslog
Хотите следить за файлом журнала для того, когда он изменяется?
tail -f /var/log/syslog
Хотите быстро перечитать по файлу от запуска?
more /var/log/syslog
Хотите быстро найти, содержит ли файл некоторый текст?
grep "find this text" /var/log/syslog
Try adding a validation query attribute. This should have the effect of automatically closing and re-opening the connection after a timeout like this:
validationQuery="SELECT 1"
Во-первых, избавьтесь от свойства autoReconnect
. Вам это не нужно с пулом соединений, и это может вызвать проблемы.
Во-вторых, убедитесь, что вы закрыли все ресурсы ( Соединение
, Заявление
и ResultSet
) в вашем JDBC-коде в блоке finally
.
Я не уверен, применимо ли это к вашему случаю, но среди начинающих распространено заблуждение, что они, кажется, думают, что вы не нужно закрывать эти ресурсы в случае соединений в пуле. Это неправда. Объединенное соединение - это оболочка (декоратор) вокруг соединения, которое имеет слегка измененный метод close ()
, который примерно выглядит как
public void close() throws SQLException {
if (this.connection is still active) {
do not close this.connection, but just return it to pool for reuse;
} else {
actually invoke this.connection.close();
}
}
Другими словами, их закрытие освобождает объединенное соединение, чтобы его можно было снова поместить в пул для повторного использования в будущем. Если вы установите соединения, не закрывая их, то в пуле рано или поздно кончатся соединения.
Поскольку это срочно и для производства, я предлагаю вам взглянуть на достойный пул соединений, такой как c3p0 . Он более устойчивый и надежный и лучше справляется с таймаутами.
With your configuration, it's not supposed to create another connection if it's idle. Try to add
minIdle="3"
With this setting, DBCP will maintain 3 connections all time.
We see exactly the same behavior with one of lightly used servers. Due to the default connection timeout of 8 hours, we see no connections when we come in the morning. That's what we expected. However, sometimes we see stale connection and the first request will fail. To get around this issue, you need add following attributes,
testWhileIdle="true",
timeBetweenEvictionRunsMillis="60000"