Spring JPA с Hikari не освобождает связь - PullRequest
0 голосов
/ 20 февраля 2019

У меня есть приложение с весенней загрузкой, которое имеет контроллер.Когда я пытаюсь запустить API одновременно (35 параллельных обращений), он попадает в контроллер, но там я использую findOne из crudrepository, который проверяет postgres на наличие некоторых данных.Функции findOne возвращаются в миллисекундах, но следующий API не получает соединения postgres.

Я использую HikariCp в качестве пула соединений со следующими настройками

hikari:
 idleTimeout: 10000
 connectionTimeout: 60000
 maximumPoolSize: 30
 minimumIdle: 2
 poolName: gor-srms
 leakDetectionThreshold: 10000

Короче говоря, в любой точкетолько 30 API работают параллельно.Как только API завершен, только следующее соединение получает postgres соединение.

Почему соединение postgres не используется для других API, поскольку вызов findOne занимает всего около миллисекунд?

Добавление всего приложениясвойства:

server:
   port: ${SERVER_PORT:${PORT:8093}}
   contextPath: ${mdm.service.contextPath:/wms-masterdata}

spring:
  application:
    name: ${mdm.service.name:mdm-service}
  jmx:
    enabled: false
  profiles:
    active: local
  cloud:
    config:
      discovery:
        enabled: false
        serviceId: config-server
  jpa:
      hibernate:
        ddl-auto: validate
  http:
      multipart:
        max-file-size: 20MB
        max-request-size: 20MB

discovery:
  enabled: true

eureka:
  client:
    enabled: ${discovery.enabled:true}
    serviceUrl:
      defaultZone: ${discovery.url:${REGISTRY_SERVICE_URL:http://localhost:8761}}/eureka/
  instance:
    metadataMap:
      contextPath: ${server.contextPath}

db:
  driver: org.postgresql.Driver
  url: jdbc:postgresql://${database.ip:localhost}:5432/wms_masterdata
  username: postgres
  password: postgres

hikari:
  idleTimeout: 10000
  connectionTimeout: 60000
  maximumPoolSize: 10
  minimumIdle: 2
  poolName: gor-mdm
  leakDetectionThreshold: 60000

hibernate:
  unit_name: wms_masterdata
  show_sql: false
  generate_ddl: false

entitymanager:
  packagesToScan: com.gor.platform.mdm.service.model

butler:
  url: https://192.168.8.116

management:
  security:
    enabled: false
  health:
    db:
      enabled: false

security:
  basic:
    enabled: false

flyway:
  baseline-on-migrate: true
  enabled: true
  ignore-ignored-migrations: true

1 Ответ

0 голосов
/ 22 февраля 2019
spring.datasource.TYPE=com.zaxxer.hikari.HikariDataSource
spring.datasource.hikari.minimumIdle=5
spring.datasource.hikari.maximumPoolSize=20
spring.datasource.hikari.idleTimeout=30000
spring.datasource.hikari.poolName=SpringBootJPAHikariCP
spring.datasource.hikari.maxLifetime=2000000
spring.datasource.hikari.testWhileIdle=true
spring.datasource.hikari.validationQuery=SELECT 1
spring.datasource.hikari.connectionTimeout=30000 

Наличие этого типа настроек помогает эффективно создавать пулы соединений и позволяет серверу больше трафика.

...