слишком много клиентов в postgresql в docker-swarm с весенней загрузкой - PullRequest
1 голос
/ 21 сентября 2019

Я настроил среду разработки в среде Docker Swarm, которая состоит из 2 узлов, нескольких сетей и нескольких микросервисов.Ниже приведен пример того, как это выглядит в кластере.

Service                 Network               Node       Image Version

nginx reverse proxy     backend, frontend     node 1     latest stable-alpine
Service A               backend, database     node 2     8-jre-alpine
Service B               backend, database     node 2     8-jre-alpine
Service C               backend, database     node 1     8-jre-alpine
Database postgresql     database              node 1     latest alpine

Сервисы - это приложения с начальной загрузкой 2.1.7 с boot-data-jpa.Все вышеперечисленные сервисы содержат подключение базы данных к экземпляру postgresql.Для базы данных я настроил только следующие свойства в application.properties:

spring.datasource.url
spring.datasource.username
spring.datasource.password
spring.datasource.driver-class-name
spring.jpa.hibernate.ddl-auto=
spring.jpa.properties.hibernate.jdbc.lob.non_contextual_creation=true

Через некоторое время я вижу, что лимит соединения в postgresql превышает, что не позволяет создавать новое соединение.

2019-09-21 13:01:07.031  1 --- [onnection adder] com.zaxxer.hikari.pool.HikariPool        : HikariPool-1 - Cannot acquire connection from data source org.postgresql.util.PSQLException: FATAL: sorry, too many clients already

Аналогичная ошибка проявляется и при попытке подключиться через ssh к базе данных.

psql: FATAL:  sorry, too many clients already

То, что я пытался до сих пор:

spring.datasource.hikari.leak-detection-threshold=20000

, что не помогло.

Я нашел несколько ответов на эту проблему, например:

  • увеличить лимит соединения в postgresql

    Нет, я не хочу этого делать.Это просто временное решение.Это снова загрязнит соединение, но чуть позже.

  • добавить время простоя в конфигурации hikaripCP

    Стандартная конфигурация hikariCP уже имеет значение по умолчанию 10 минут, что не помогает

  • добавить максимальное время жизни в конфигурацию hikariCP

    Стандартная конфигурация hikariCP уже имеет значение по умолчанию 30 минут, что не помогает

  • уменьшить количество неактивных соединений в конфигурации hikariCP

    Стандартная конфигурация hikariCP уже имеет значение по умолчанию 10, что не помогает

  • установить минимальное время простоя в конфигурации hikariCP

    По умолчанию 10, и яхорошо с этим.b

Я ожидаю соединения около 30 для служб, но нахожу около 100 соединений.Перезапуск служб или их остановка также не закрывают свободные соединения.Каковы ваши предложения?Это специфическая проблема докера?Кто-то испытывал такую ​​же проблему?

...