[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"question-jdbc-chto-takoe-hikaricp-i-kak-ego-nastroit":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":19,"progress":20,"seo":21},1179,"chto-takoe-hikaricp-i-kak-ego-nastroit",36,"jdbc","JDBC","🔌","Что такое HikariCP и как его настроить","HikariCP (от японского «свет») — это высокопроизводительная реализация пула JDBC-соединений, являющаяся стандартом в Spring Boot начиная с версии 2.0.\n\n### Почему HikariCP\n\n- Высокая производительность — один из самых быстрых пулов за счёт оптимизаций на уровне байткода\n- Малый размер — библиотека около 130 КБ\n- Надёжность — строгое следование спецификации JDBC\n- Стандарт Spring Boot — используется по умолчанию с версии 2.0\n\n### Ключевые параметры конфигурации\n\n| Параметр | По умолчанию | Описание |\n|:---------|:-------------|:---------|\n| `maximumPoolSize` | 10 | Максимальное количество соединений в пуле |\n| `minimumIdle` | = maximumPoolSize | Минимальное количество неактивных соединений |\n| `connectionTimeout` | 30 000 мс | Максимальное время ожидания соединения из пула |\n| `idleTimeout` | 600 000 мс | Максимальное время простоя соединения |\n| `maxLifetime` | 1 800 000 мс | Максимальное время жизни соединения |\n| `poolName` | auto-generated | Имя пула (для мониторинга) |\n| `leakDetectionThreshold` | 0 (выкл.) | Время в мс, после которого соединение считается «утёкшим» |\n\n### Настройка в Spring Boot (application.yml)\n\n```yaml\nspring:\n  datasource:\n    url: jdbc:postgresql:\u002F\u002Flocalhost:5432\u002Fmydb\n    username: app_user\n    password: secret\n    hikari:\n      maximum-pool-size: 15\n      minimum-idle: 5\n      connection-timeout: 30000\n      idle-timeout: 600000\n      max-lifetime: 1800000\n      pool-name: MyApp-Pool\n      leak-detection-threshold: 60000\n```\n\n\u003Cdetails>\n\u003Csummary>Программная настройка HikariCP\u003C\u002Fsummary>\n\n```java\nimport com.zaxxer.hikari.HikariConfig;\nimport com.zaxxer.hikari.HikariDataSource;\n\npublic class HikariCPConfig {\n\n    public static DataSource createDataSource() {\n        HikariConfig config = new HikariConfig();\n        config.setJdbcUrl(\"jdbc:postgresql:\u002F\u002Flocalhost:5432\u002Fmydb\");\n        config.setUsername(\"app_user\");\n        config.setPassword(\"secret\");\n        config.setDriverClassName(\"org.postgresql.Driver\");\n\n        config.setMaximumPoolSize(15);\n        config.setMinimumIdle(5);\n        config.setConnectionTimeout(30_000);\n        config.setIdleTimeout(600_000);\n        config.setMaxLifetime(1_800_000);\n        config.setPoolName(\"MyApp-Pool\");\n        config.setLeakDetectionThreshold(60_000);\n\n        \u002F\u002F Оптимизации для PostgreSQL\n        config.addDataSourceProperty(\"cachePrepStmts\", \"true\");\n        config.addDataSourceProperty(\"prepStmtCacheSize\", \"250\");\n        config.addDataSourceProperty(\"prepStmtCacheSqlLimit\", \"2048\");\n\n        return new HikariDataSource(config);\n    }\n}\n```\n\n\u003C\u002Fdetails>\n\n\u003Cdetails>\n\u003Csummary>Рекомендации для продуктивной среды\u003C\u002Fsummary>\n\n```java\npublic class ProductionHikariConfig {\n\n    public static DataSource createProductionDataSource() {\n        HikariConfig config = new HikariConfig();\n        config.setJdbcUrl(\"jdbc:postgresql:\u002F\u002Fdb-host:5432\u002Fproduction\");\n        config.setUsername(System.getenv(\"DB_USERNAME\"));\n        config.setPassword(System.getenv(\"DB_PASSWORD\"));\n\n        \u002F\u002F Размер пула: (CPU cores * 2) + effective_spindle_count\n        config.setMaximumPoolSize(10);\n        config.setMinimumIdle(10); \u002F\u002F В продакшене minimumIdle = maximumPoolSize\n\n        \u002F\u002F maxLifetime должен быть меньше wait_timeout на стороне СУБД\n        config.setMaxLifetime(1_740_000); \u002F\u002F 29 минут\n        config.setConnectionTimeout(10_000); \u002F\u002F fail fast\n        config.setPoolName(\"Production-Pool\");\n        config.setLeakDetectionThreshold(30_000);\n        config.setRegisterMbeans(true); \u002F\u002F JMX мониторинг\n\n        return new HikariDataSource(config);\n    }\n}\n```\n\n\u003C\u002Fdetails>\n\n### Важное\n\n- В продуктивной среде minimumIdle рекомендуется устанавливать равным maximumPoolSize\n- maxLifetime должен быть на несколько секунд меньше, чем таймаут на стороне СУБД\n- poolName критически важен для мониторинга — особенно при нескольких источниках данных\n- Включите leakDetectionThreshold в dev\u002Fstage-средах для обнаружения утечек\n\n### Частые ошибки\n\n- Устанавливать maximumPoolSize = 50-100 — перегружает СУБД; обычно 10-20 достаточно\n- Забывать настроить maxLifetime — соединения могут быть разорваны со стороны СУБД\n- Не закрывать Connection (отсутствие try-with-resources) — утечка из пула\n- Не включать мониторинг — невозможно диагностировать проблемы с пулом в продакшене\n\n### Как используется в 2026\n\n- HikariCP 6.x — актуальная версия с поддержкой Java 21+ и виртуальных потоков\n- В Spring Boot 3.x настраивается через `spring.datasource.hikari.*`\n- Для cloud-native приложений параметры пула определяются через ConfigMap\u002FSecrets в Kubernetes\n- Интеграция с OpenTelemetry для распределённого трейсинга запросов к БД\n\n> **На собеседовании:** назовите 3-4 ключевых параметра (maximumPoolSize, connectionTimeout, maxLifetime, leakDetectionThreshold) и их типичные значения. Покажите, что знаете формулу размера пула. Частый вопрос: почему minimumIdle = maximumPoolSize в продакшене — ответ: исключает задержки на создание новых соединений при пиковой нагрузке.","","middle",[15,16,17,18,7],"databases","performance","configuration","spring-boot",[],null,{"title":22,"description":23,"ogTitle":22,"ogDescription":24,"keywords":25,"schemaAnswer":34,"featuredSnippetReady":35},"HikariCP: настройка пула соединений в Spring Boot -- Gymterview","HikariCP -- высокопроизводительный пул JDBC-соединений и стандарт Spring Boot. Ключевые параметры: maximumPoolSize, connectionTimeout, maxLifetime, leakDetection.","Настройка HikariCP: ключевые параметры, Spring Boot application.yml, мониторинг, рекомендации для продакшена.",[26,27,28,29,30,31,8,32,33],"HikariCP","пул соединений","maximumPoolSize","connectionTimeout","maxLifetime","Spring Boot","Java","собеседование","HikariCP -- высокопроизводительный пул JDBC-соединений, стандарт Spring Boot с версии 2.0. Ключевые параметры: maximumPoolSize (10), connectionTimeout (30 сек), maxLifetime (30 мин), leakDetectionThreshold. В продакшене minimumIdle = maximumPoolSize, maxLifetime меньше wait_timeout СУБД.",true]