
Новые сообщения [новые:0]
Дайджест
Горячие темы
Избранное [новые:0]
Форумы
Пользователи
Статистика
Статистика нагрузки
Мод. лог
Поиск
|
|
24.12.2017, 21:01
|
|||
|---|---|---|---|
|
|||
Закрывается соединение с БД при долгом запросе |
|||
|
#18+
Доброго! Подскажите, пожалуйста, в чем может быть проблема. Пишу rest-сервис на spring boot (tomcat), который подключается к 2-м базам Postgres, из одной только читает, во второй еще и меняет данные. При вызове функции в БД, которая выполняет достаточно долгий запрос (> 30 мин), и меняет данные, происходит ошибка при выходе из функции: org.springframework.transaction.TransactionSystemException: Could not commit JDBC transaction; nest ed exception is java.sql.SQLException: Connection has already been closed Соединения настраиваются в config.java следующим образом: @Primary @Bean(name = "dataSource") @ConfigurationProperties("spring.datasource") public DataSource dataSource() { return DataSourceBuilder.create().build(); } @Bean(name = "datasourceForUpdate") @ConfigurationProperties("spring.datasourceForUpdate") public DataSource datasourceForUpdate() { return DataSourceBuilder.create().build(); } В классе Dao имеется привязка шаблона к соединению: @Autowired private JdbcTemplate jdbcTemplate; @Autowired private JdbcTemplate jdbcTemplateForUpdate; Метод, в котором выполняется вызов хранимой: @Transactional public String findObjs(String guid) { SimpleJdbcCall call = new SimpleJdbcCall(datasourceForUpdate); call.withSchemaName(schemeName); call.withFunctionName("find_objs"); MapSqlParameterSource in = new MapSqlParameterSource(); in.addValue("in_guid", guid); String res = call.executeFunction(String.class, in); return res; } В файле настроек вот такие параметры (для второго соединения аналогично, только ip другой): spring.datasourceForUpdate.platform=postgres spring.datasourceForUpdate.driverClassName=org.postgresql.Driver spring.datasourceForUpdate.url=jdbc:postgresql:192.168.20.30:5432/test?autoReconnect=true spring.datasourceForUpdate.username=test spring.datasourceForUpdate.password=test spring.datasourceForUpdate.test-while-idle=true spring.datasourceForUpdate.time-between-eviction-runs-millis=6000 # сбросить соединение если нет активности spring.datasourceForUpdate.remove-abandoned=true # время в СЕКУНДАХ spring.datasourceForUpdate.remove-abandoned-timeout=36000 #spring.datasourceForUpdate.defaultAutoCommit=false spring.datasourceForUpdate.validation-query=SELECT 1; spring.datasourceForUpdate.validation-interval=30000 Параметры уже менял и так и сяк, отключал и включал remove-abandoned, менял значения таймаутов. Не помогает! (Если объект поиска таков, что запрос работает менее 30 мин, то все срабатывает без ошибок) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
24.12.2017, 21:21
|
|||
|---|---|---|---|
Закрывается соединение с БД при долгом запросе |
|||
|
#18+
Pavlo7, Ну, 30 мин ведь действительно многовато. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
24.12.2017, 21:57
|
|||
|---|---|---|---|
|
|||
Закрывается соединение с БД при долгом запросе |
|||
|
#18+
Может, в настройках Постгреса посмотреть? Есть там такой параметр. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
24.12.2017, 22:41
|
|||
|---|---|---|---|
Закрывается соединение с БД при долгом запросе |
|||
|
#18+
Pavlo7, Значение интервала бездействия в Spring Session по умолчанию равно 30 минутам. см. - DEFAULT_MAX_INACTIVE_INTERVAL_SECONDS - @EnableJdbcHttpSession - JdbcHttpSessionConfiguration ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
24.12.2017, 22:54
|
|||
|---|---|---|---|
Закрывается соединение с БД при долгом запросе |
|||
|
#18+
И у клиента свой тамаут. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
25.12.2017, 14:23
|
|||
|---|---|---|---|
|
|||
Закрывается соединение с БД при долгом запросе |
|||
|
#18+
Usman, спасибо, пошел смотреть! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|

start [/forum/topic.php?fid=59&mobile=1&tid=2122371]: |
0ms |
get settings: |
9ms |
get forum list: |
14ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
148ms |
get topic data: |
13ms |
get forum data: |
3ms |
get page messages: |
50ms |
get tp. blocked users: |
2ms |
| others: | 13ms |
| total: | 260ms |

| 0 / 0 |

Извините, этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
... ля, ля, ля ...