[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"question-postgresql-kak-nastroit-pul-soedineniy-hikaricp-dlya-postgresql":3},{"id":4,"slug":5,"topicId":6,"topicSlug":7,"topicName":8,"topicEmoji":9,"question":10,"answer":11,"codeLang":12,"codeSrc":12,"important":12,"commonMistakes":12,"modernUsage":12,"difficulty":13,"tags":14,"related":15,"progress":16,"seo":17},1058,"kak-nastroit-pul-soedineniy-hikaricp-dlya-postgresql",28,"postgresql","PostgreSQL","🐘","Как настроить пул соединений HikariCP для PostgreSQL?","HikariCP — высокопроизводительный пул соединений для JDBC, используемый по умолчанию в Spring Boot. Пул переиспользует готовые соединения, снижая задержки (создание TCP-соединения ~5-10 мс) и нагрузку на PostgreSQL (~10 МБ RAM на каждое соединение).\n\n### Настройка в application.yml\n\n```yaml\nspring:\n  datasource:\n    hikari:\n      maximum-pool-size: 20\n      minimum-idle: 5\n      connection-timeout: 30000       # таймаут ожидания соединения из пула (мс)\n      idle-timeout: 600000            # время жизни неактивного соединения (мс)\n      max-lifetime: 1800000           # максимальное время жизни соединения (мс)\n      pool-name: BankAppPool\n      leak-detection-threshold: 60000 # предупреждение при удержании > 60 сек\n      data-source-properties:\n        prepareThreshold: 5\n        preparedStatementCacheQueries: 256\n        preparedStatementCacheSizeMiB: 5\n```\n\n### Формула размера пула\n\nОптимальный размер пула обычно значительно меньше, чем ожидают. Формула от авторов HikariCP:\n\n```\npool_size = количество_ядер_CPU * 2 + количество_дисков\n```\n\nДля сервера с 4 ядрами и 1 SSD: `4 * 2 + 1 = 9` соединений. Этого достаточно для тысяч запросов в секунду.\n\n### Мониторинг HikariCP\n\n\u003Cdetails>\u003Csummary>Конфигурация метрик\u003C\u002Fsummary>\n\n```java\n@Configuration\npublic class HikariMetricsConfig {\n\n    @Bean\n    public HikariDataSource dataSource(DataSourceProperties properties,\n                                        MeterRegistry meterRegistry) {\n        HikariDataSource ds = properties.initializeDataSourceBuilder()\n                .type(HikariDataSource.class).build();\n        ds.setMetricRegistry(meterRegistry);\n        return ds;\n    }\n}\n```\n\n\u003C\u002Fdetails>\n\n### Ключевые метрики\n\n- `hikaricp.connections.active` — активные соединения\n- `hikaricp.connections.idle` — простаивающие соединения\n- `hikaricp.connections.pending` — потоки, ожидающие соединение (если > 0, пул мал)\n- `hikaricp.connections.timeout.total` — количество таймаутов получения соединения\n\n### Типичные проблемы\n\n- **connection-timeout срабатывает** — пул исчерпан: увеличить пул или оптимизировать время транзакций\n- **max-lifetime** должен быть меньше `idle_in_transaction_session_timeout` на PostgreSQL и меньше таймаута файервола\u002Fбалансировщика\n- **Утечка соединений** — включить `leak-detection-threshold` для обнаружения\n\n> **На собеседовании:** формула размера пула — обязательный ответ. Покажите, что 10 соединений хватает для тысяч rps, а 100 соединений — это антипаттерн, который замедлит PostgreSQL из-за контекстных переключений. Метрика `pending > 0` — сигнал к действию.","","middle",[7],[],null,{"title":18,"description":19,"ogTitle":18,"ogDescription":20,"keywords":21,"schemaAnswer":22,"featuredSnippetReady":23},"Как настроить пул соединений HikariCP для PostgreSQL? — Gymterview","HikariCP — высокопроизводительный пул соединений для JDBC, используемый по умолчанию в Spring Boot. Пул переиспользует готовые соединения, снижая задержки (созд","HikariCP — высокопроизводительный пул соединений для JDBC, используемый по умолчанию в Spring Boot. Пул переиспользует г",[7,13],"HikariCP — высокопроизводительный пул соединений для JDBC, используемый по умолчанию в Spring Boot. Пул переиспользует готовые соединения, снижая задержки (создание TCP-соединения ~5-10 мс) и нагрузку на PostgreSQL (~10 МБ RAM на каждое соединение).",true]