es
Feedback
Библиотека джависта | Java, Spring, Maven, Hibernate

Библиотека джависта | Java, Spring, Maven, Hibernate

Ir al canal en Telegram

Все самое полезное для Java-разработчика в одном канале. Список наших каналов: https://t.me/proglibrary/9197 Для обратной связи: @proglibrary_feeedback_bot По рекламе: @proglib_adv РКН: https://gosuslugi.ru/snet/67a5bbda1b17b35b6c1a55c4

Mostrar más

📈 Análisis del canal de Telegram Библиотека джависта | Java, Spring, Maven, Hibernate

El canal Библиотека джависта | Java, Spring, Maven, Hibernate (@javaproglib) en el segmento lingüístico de Ruso es un actor destacado. Actualmente la comunidad reúne a 22 427 suscriptores, ocupando la posición 6 056 en la categoría Tecnologías y Aplicaciones y el puesto 30 006 en la región Rusia.

📊 Métricas de audiencia y dinámica

Desde su creación el невідомо, el proyecto ha mostrado un crecimiento acelerado, reuniendo a 22 427 suscriptores.

Según los últimos datos del 10 junio, 2026, el canal mantiene una actividad estable. En los últimos 30 días la variación de miembros fue de -83, y en las últimas 24 horas de -4, conservando un alto alcance.

  • Estado de verificación: No verificado
  • Tasa de interacción (ER): El promedio de interacción de la audiencia es 8.56%. Durante las primeras 24 horas tras publicar, el contenido suele obtener 4.99% de reacciones respecto al total de suscriptores.
  • Alcance de las publicaciones: Cada publicación recibe en promedio 1 921 visualizaciones. En el primer día suele acumular 1 120 visualizaciones.
  • Reacciones e interacción: La audiencia responde de forma activa: el promedio de reacciones por publicación es 13.
  • Intereses temáticos: El contenido se centra en temas clave como джависта, навигация, jooq, corejava, hibernate.

📝 Descripción y política de contenido

El autor describe el recurso como un espacio para expresar opiniones subjetivas:
Все самое полезное для Java-разработчика в одном канале. Список наших каналов: https://t.me/proglibrary/9197 Для обратной связи: @proglibrary_feeedback_bot По рекламе: @proglib_adv РКН: https://gosuslugi.ru/snet/67a5bbda1b17b35b6c1a55c4

Gracias a la alta frecuencia de actualizaciones (últimos datos recibidos el 11 junio, 2026), el canal mantiene la vigencia y un amplio alcance. La analítica demuestra que la audiencia interactúa activamente con el contenido, lo que lo convierte en un punto de referencia dentro de la categoría Tecnologías y Aplicaciones.

22 427
Suscriptores
-424 horas
-327 días
-8330 días
Atraer Suscriptores
junio '26
junio '26
+27
en 0 canales
mayo '26
+136
en 3 canales
Get PRO
abril '26
+85
en 5 canales
Get PRO
marzo '26
+69
en 1 canales
Get PRO
febrero '26
+103
en 2 canales
Get PRO
enero '26
+75
en 0 canales
Get PRO
diciembre '25
+98
en 4 canales
Get PRO
noviembre '25
+94
en 1 canales
Get PRO
octubre '25
+117
en 2 canales
Get PRO
septiembre '25
+120
en 1 canales
Get PRO
agosto '25
+93
en 4 canales
Get PRO
julio '25
+78
en 0 canales
Get PRO
junio '25
+118
en 0 canales
Get PRO
mayo '25
+106
en 0 canales
Get PRO
abril '25
+178
en 15 canales
Get PRO
marzo '25
+294
en 52 canales
Get PRO
febrero '25
+200
en 31 canales
Get PRO
enero '25
+231
en 51 canales
Get PRO
diciembre '24
+196
en 38 canales
Get PRO
noviembre '24
+216
en 48 canales
Get PRO
octubre '24
+253
en 36 canales
Get PRO
septiembre '24
+339
en 37 canales
Get PRO
agosto '24
+319
en 36 canales
Get PRO
julio '24
+422
en 35 canales
Get PRO
junio '24
+372
en 34 canales
Get PRO
mayo '24
+460
en 35 canales
Get PRO
abril '24
+438
en 38 canales
Get PRO
marzo '24
+610
en 30 canales
Get PRO
febrero '24
+573
en 32 canales
Get PRO
enero '24
+561
en 26 canales
Get PRO
diciembre '23
+466
en 36 canales
Get PRO
noviembre '23
+372
en 3 canales
Get PRO
octubre '23
+503
en 23 canales
Get PRO
septiembre '23
+676
en 0 canales
Get PRO
agosto '23
+570
en 0 canales
Get PRO
julio '23
+446
en 0 canales
Get PRO
junio '23
+448
en 0 canales
Get PRO
mayo '23
+560
en 0 canales
Get PRO
abril '23
+226
en 0 canales
Get PRO
marzo '23
+762
en 0 canales
Get PRO
febrero '23
+359
en 0 canales
Get PRO
enero '23
+387
en 0 canales
Get PRO
diciembre '22
+469
en 0 canales
Get PRO
noviembre '22
+542
en 0 canales
Get PRO
octubre '22
+289
en 0 canales
Get PRO
septiembre '22
+368
en 0 canales
Get PRO
agosto '22
+439
en 0 canales
Get PRO
julio '22
+557
en 0 canales
Get PRO
junio '22
+503
en 0 canales
Get PRO
mayo '22
+275
en 0 canales
Get PRO
abril '22
+383
en 0 canales
Get PRO
marzo '22
+399
en 0 canales
Get PRO
febrero '22
+225
en 0 canales
Get PRO
enero '22
+364
en 0 canales
Get PRO
diciembre '21
+334
en 0 canales
Get PRO
noviembre '21
+297
en 0 canales
Get PRO
octubre '21
+263
en 0 canales
Get PRO
septiembre '21
+329
en 0 canales
Get PRO
agosto '21
+425
en 0 canales
Get PRO
julio '21
+371
en 0 canales
Get PRO
junio '21
+334
en 0 canales
Get PRO
mayo '21
+586
en 0 canales
Get PRO
abril '21
+702
en 0 canales
Get PRO
marzo '21
+633
en 0 canales
Get PRO
febrero '21
+660
en 0 canales
Get PRO
enero '21
+568
en 0 canales
Get PRO
diciembre '20
+18 204
en 0 canales
Fecha
Crecimiento de Suscriptores
Menciones
Canales
11 junio+1
10 junio+2
09 junio0
08 junio+1
07 junio+1
06 junio+5
05 junio0
04 junio+5
03 junio+3
02 junio+4
01 junio+5
Publicaciones del Canal
▶️ Запись Mobius конференции Анна Жаркова, лид мобильной разработки ГК «Юзтех», выступила на конференции с докладом о том, как Swift и Kotlin учатся говорить друг с другом, и что из этого выходит на практике. В докладе: 🔹 прямой экспорт Kotlin/Native в Swift от JetBrains и что это меняет для кроссплатформенной разработки; 🔹 инструмент SwiftJava от Apple — конвертация кода между языками без KMP; 🔹 как и когда использовать каждое из решений в реальных iOS и Android-приложениях; 🔹 натив vs кроссплатформа: плюсы, минусы и лучшие практики. 🎬 Смотреть ══════ Навигация ══════ ВакансииЗадачиСобесы 🐸 Библиотека джависта #CoreJava

2
😮 Топ-вакансий для джавистов за неделю Junior Backend Developer — от 120 000 до 200 000 ₽ — гибрид (Москва) JAVA-разработчик — от 170 000 ₽ — удалёнка Senior Java Developer — от 320 000 ₽ — удалёнка ➡️ Еще больше топовых вакансий — в нашем канале Java jobs
1 055
3
@TransactionalEventListener с фазой AFTER_COMMIT. Транзакция откатилась. Что произойдёт с событием?
1 242
4
Collectors.toMap падает там, где HashMap.put молчит Привычка к map.put() подводит при переходе на стримы: Map<String, User> byEmail = users.stream() .collect(Collectors.toMap(User::email, u -> u)); Здесь две мины: 1. Дубликаты ключей → `IllegalStateException`. Map.put тихо перезаписал бы значение, а toMap без merge-функции бросает «Duplicate key». Фикс — третий аргумент: .collect(Collectors.toMap(User::email, u -> u, (a, b) -> b)); // оставить последний 2. `null` в значении → `NullPointerException`. Под капотом toMap использует Map.merge, который по контракту не допускает null-значение. HashMap сам по себе null-значения разрешает — поэтому баг ловится не на ровной коллекции, а на «редких» данных в проде: .collect(Collectors.toMap(User::email, User::nickname)); // nickname == null -> NPE Если значение может быть null — собирай вручную в HashMap через forEach/reduce или фильтруй заранее. Стоит держать в голове: toMap строже, чем тот Map, который он создаёт. ══════ Навигация ══════ Вакансии • Задачи • Собесы 🐸 Библиотека джависта #CoreJava
1
5
🤫 Тихое отключение батчинга инсертов Выставил hibernate.jdbc.batch_size, ждёшь один батч на 100 строк, а в логах 100 отдельных INSERT. Если ID у сущности такой: @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Long id; …то батчинг не работает в принципе. Из официальной доки Hibernate: insert-батчинг на уровне JDBC прозрачно отключается при использовании identity-генератора. Причина в стратегии write-behind. С IDENTITY сгенерированный ID известен только после выполнения INSERT (через getGeneratedKeys()). А значит Hibernate обязан выполнить вставку немедленно при persist(), и накопить пачку для одного батча уже не может. Решение — SEQUENCE с оптимизатором pooled / pooled-lo: он резервирует диапазон значений в памяти (одна выборка из последовательности на N строк), ID известен заранее, write-behind и батчинг включаются: @Id @GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "seq") @SequenceGenerator(name = "seq", allocationSize = 50) private Long id; MySQL SEQUENCE не имеет, там IDENTITY часто единственный вариант, и батчинг приходится вытягивать отдельными трюками (rewriteBatchedStatements=true + ручные приёмы). ══════ Навигация ══════ Вакансии • Задачи • Собесы 🐸 Библиотека джависта #CoreJava
1 480
6
🐸Библиотека джависта #DevLife
🐸Библиотека джависта #DevLife
1 487
7
🤫 Признайтесь: у вас в проде до сих пор крутится Spring Boot 2.7? Если послушать конференции и треды на Хабре, то кажется, ч
🤫 Признайтесь: у вас в проде до сих пор крутится Spring Boot 2.7? Если послушать конференции и треды на Хабре, то кажется, что весь мир давно переехал на 3.x, а кто не успел, тот прямо сейчас домигрирует. Только в курилке инженеры говорят другое. На самом деле огромная часть систем спокойно живёт на 2.7. Прод работает, инциденты не сыпятся, бизнес доволен. Просто вслух об этом говорить почему-то неловко, будто старая версия фреймворка автоматически делает тебя «неаккуратным инженером». Статья без морализаторства разбирает то, о чём не всегда говорят: — почему javax → jakarta — это только входной билет, а не сама миграция; — почему «там просто версию поднять» ломается ровно в тот момент, когда Hibernate начинает генерить чуть-чуть другой SQL; — почему security-кейс — единственный аргумент, который стабильно проходит приоритизацию; — и чем на самом деле вы платите, оставаясь на 2.7 (спойлер: не стабильностью, а отсрочкой). 🔗 Читай подробнее ══════ Навигация ══════ Вакансии • Задачи • Собесы 🐸 Библиотека джависта #CoreJava
1 491
8
🔥 Инженерная методичка по ИИ от Романа Барлоса (Team Lead в Yandex Cloud) Продолжаем делиться экспертизой команды курса «Раз
🔥 Инженерная методичка по ИИ от Романа Барлоса (Team Lead в Yandex Cloud) Продолжаем делиться экспертизой команды курса «Разработка ИИ-агентов». Роман собрал мастхев-инструменты и ключевые работы для тех, кто хочет выйти за рамки вайбкодинга. 🛠️ Полезные инструменты: • Understand Anything — граф знаний по коду и зависимостям. • DeepTutor — open-source платформа для персонализированного обучения. • Superpowers — набор практик для системной разработки с ИИ. • Awesome Agent Skills — коллекция навыков для ИИ-агентов. 📚 Ключевые работы по LLM: • Attention Is All You Need (2017) — архитектура Transformer. • GPT-1 (2018) — начало эпохи GPT. • GPT-2 (2019) — решение новых задач без дообучения. • GPT-3 (2020) — обучение на примерах из запроса. • InstructGPT (2022) — RLHF и современные чат-боты. На курсе Роман выступает консультантом программы: помогает формировать содержание уроков с опорой на актуальные инженерные практики». Занять свое место на потоке: 👉 Курс «Разработка ИИ-агентов»
1 466
9
⚡️ Магия curl Нужно скачать файл и продолжить загрузку после обрыва? curl -C - автоматически продолжит с того места, где остановился — не нужно качать заново. 🔹 Зачем это нужно — Загрузка больших файлов через нестабильное соединение. — Автоматически определяет размер уже скачанной части и продолжает. — Работает с HTTP, FTP и даже SFTP. 🔹 Как использовать — Скачать с возможностью продолжения: curl -C - -O https://example.com/dump.sql.gz — С прогресс-баром: curl -C - -# -O https://example.com/large-file.tar.gz — Ограничить скорость: curl --limit-rate 10M -O https://example.com/file.iso — В конкретный файл: curl -C - -o backup.tar.gz https://example.com/backup — С авторизацией: curl -C - -u user:pass -O https://repo.example.com/artifact.jar 💡 Заверни в цикл для автоматического ретрая: while ! curl -C - -O https://example.com/dump.sql.gz; do sleep 5; done — скрипт будет пытаться докачать, пока не получится. ══════ Навигация ══════ Вакансии • Задачи • Собесы 🐸 Библиотека джависта #Enterprise
1 576
10
🐸Библиотека джависта #DevLife
🐸Библиотека джависта #DevLife
1 614
11
⚡️ Apache Fory — 4.3k ⭐️ Стандартная Java-сериализация медленная и жирная по байтам. Берёшь Kryo → лучше, но возишься с регистрацией классов и тюнингом. Apache Fory (бывший Fury, переименовали в 2025-м) — это сериализация, которая делает и то, и другое. Генерит сериализаторы в рантайме через JIT, использует zero-copy и даёт до 170x против JDK-сериализации. IDL не нужен: import org.apache.fory.Fory; import org.apache.fory.config.Language; Fory fory = Fory.builder() .withLanguage(Language.JAVA) .requireClassRegistration(true) .build(); fory.register(Order.class); byte[] bytes = fory.serialize(order); Order copy = (Order) fory.deserialize(bytes); Это drop-in замена JDK / Kryo / Hessian — со 100% совместимым API (writeObject/readObject, Externalizable и т.д.), только в разы быстрее. Корректно тащит shared- и циклические ссылки, умеет schema evolution (можно добавлять/удалять поля независимо на двух концах), поддерживает GraalVM native image через AOT без рефлексии. А режим xlang сериализует один и тот же объект между Java, Python, C++, Go, Rust, JS, Scala, Kotlin и TypeScript. Идеален для высоконагруженного RPC, кэшей, передачи данных между сервисами и кросс-язычных пайплайнов, где сериализация — это узкое место. 📱 Репозиторий ══════ Навигация ══════ Вакансии • Задачи • Собесы 🐸 Библиотека джависта #Enterprise
1 726
12
😎 Знакомьтесь с экспертом Proglib.academy: Senior Software Engineer и Team Lead в Yandex Cloud Роман Барлос Роман — консульт
😎 Знакомьтесь с экспертом Proglib.academy: Senior Software Engineer и Team Lead в Yandex Cloud Роман Барлос Роман — консультант нашего курса «Разработка ИИ-агентов». Он работает на стыке cloud-native архитектуры и AI, активно внедряя современные ИИ-подходы в реальные процессы разработки. За что его ценит IT-комьюнити? 🟣 Team Lead и AI-евангелист в команде UX Yandex Cloud 14-лет в разработке. Занимается AI-адопшеном в команде Yandex Cloud, проводит мастер-классы и продвигает лучшие практики для повышения эффективности разработчиков. 🟣 Техлид Sourcecraft Code Assistant С сильным практическим бэкграундом принимал участие как технический лид в создании мощного AI-расширения для VS Code. 🟣 Создатель полезного Open Source Разрабатывает утилиты, которые позволяют быстро начать эксперименты с инференсом и агентами в локальном окружении: например, набор скриптов vllm-setup для быстрого запуска окружения и mini-proxy — минималистичный прокси для OpenAI API провайдеров. 🟣 Автор интерактивных ML-визуализаций Объясняет сложные концепции наглядно. Создал серию залипательных обучающих материалов, где можно вживую пощупать работу сетей Хопфилда, машин Больцмана и VC-размерности. Роман регулярно делится инженерными наработками, инсайтами и экспертизой в своем авторском Telegram-канале На курсе Роман выступает консультантом программы: он помогает формировать содержание уроков с опорой на актуальные инженерные практики и жесткие требования индустрии. Узнать больше о программе и разработке автономных систем: 👉 Курс «Разработка ИИ-агентов» Так, продолжаем знакомить вас с командой? 👍 — Да, ждем новых лиц 🔥 — Жду полезные материалы от Романа
1 553
13
✔️ Spring-тест: идемпотентность платёжного эндпоинта Напишите защиту от двойного списания 👇 📦 Задание Клиент при сетевом таймауте повторяет POST /payments и списание проходит дважды. Реализуйте идемпотентность по заголовку Idempotency-Key. @PostMapping("/payments") public PaymentResult pay( @RequestHeader("Idempotency-Key") String key, @RequestBody PaymentRequest request) { // Ваша реализация } 📋 Требования — Повторный запрос с тем же ключом возвращает результат первого вызова и НЕ выполняет списание заново. — Разные ключи → разные операции. — Конкурентные запросы с одним ключом (двойной клик / параллельные ретраи) не должны привести к двойному выполнению. — Ключ хранится с TTL (например, 24 часа). Ставьте → 🔥, если нравится формат. Если нет → 🌚 💬 Решения под спойлер. Сравним, какое будет лучше. 🐸 Библиотека собеса по Java #practise
1 437
14
🐸Библиотека джависта #DevLife
🐸Библиотека джависта #DevLife
1 923
15
👩‍💻 Руководство по Git Подробная документацию по Git на русском языке. От базовых команд до продвинутых тем вроде pack-файлов, переменных окружения и внутреннего устройства Git. Подойдёт и новичкам и тем, кто хочет глубже понимать, как Git работает под капотом. 🔗 Подробнее ══════ Навигация ══════ Вакансии • Задачи • Собесы 🐸 Библиотека джависта #Enterprise
1 972
16
⚡️ Продолжаем знакомить вас с экспертами курса AgentOps! — Сергей Нотевский расскажет, как выстроить FinOps для AI-продуктов:
⚡️ Продолжаем знакомить вас с экспертами курса AgentOps! — Сергей Нотевский расскажет, как выстроить FinOps для AI-продуктов: оптимизировать затраты на разработку и продакшен, внедрить model routing, semantic cache и систему алертов для контроля расходов — Эмиль Сатаев разберет Context Engineering: управление контекстом, защиту от prompt injection, работу с длинными контекстами и построение безопасного пайплайна входа для AI-систем — Михаил Бондаревский покажет, как подготовить инфраструктуру для AI-агентов: Docker, sandboxing, streaming, docker-compose и воспроизводимое окружение для разработки и продакшена — Мурат Хажгериев расскажет про Enterprise Integrations & MCP: когда MCP действительно нужен, как подключать внешние сервисы и реализовывать интеграции с OAuth2 delegation — Герман Сабиров разберет Governance & Compliance для AI-систем: data flow, audit logs, требования 152-ФЗ, локализацию данных и построение compliance-подхода на уровне архитектуры Курс для backend-разработчиков, тимлидов и LLM инженеров о том, как внедрять AI-логику в бэкенд IT-продуктов и сохранять стабильность сервиса. 👉 Изучить обновленную программу AgentOps и занять место.
2 181
17
🏛 ArchUnit — 3.7k ⭐️ Кто-то дёрнул репозиторий прямо из контроллера «по-быстрому», ревьюер не заметил — и слои потекли. Документация в Confluence про это не в курсе. ArchUnit превращает архитектурные правила в обычные unit-тесты. Он читает байткод твоих классов и проверяет зависимости, а значит, нарушение падает прямо в CI, как любой другой красный тест: import com.tngtech.archunit.core.importer.ClassFileImporter; import com.tngtech.archunit.lang.ArchRule; import static com.tngtech.archunit.lang.syntax.ArchRuleDefinition.classes; @Test void controllers_must_not_touch_repositories() { var imported = new ClassFileImporter().importPackages("com.myapp"); ArchRule rule = classes() .that().resideInAPackage("..controller..") .should().onlyDependOnClassesThat() .resideOutsideOfPackage("..repository.."); rule.check(imported); } 🔹 Из коробки: → проверка слоёв (layered) и onion-архитектуры одним fluent-вызовом; → поиск циклических зависимостей между пакетами; → контроль неймингов и аннотаций. Работает с любым тест-фреймворком — JUnit, TestNG, без разницы. Для легаси есть «заморозка»: фиксируешь текущие нарушения как baseline и блокируешь только новые, разгребая старые постепенно. Можно даже задавать правила PlantUML-диаграммой и проверять код на соответствие картинке. Версия 1.4.2, поддержка вплоть до Java 26. Идеален, когда в команде больше трёх человек и архитектуру хочется не объяснять на словах, а зафиксировать в коде. 📱 Репозиторий ══════ Навигация ══════ Вакансии • Задачи • Собесы 🐸 Библиотека джависта #Enterprise
1 969
18
🐸Библиотека джависта #DevLife
🐸Библиотека джависта #DevLife
1 917
19
⚙️ HikariCP в проде: пять настроек, которые часто крутят неправильно Пул соединений в Spring Boot работает «из коробки», поэтому в application.properties обычно либо пусто, либо строчка про размер пула. И всё хорошо ровно до первого пика, когда в логах начинает мелькать Connection is not available, request timed out after 30000ms, а сервис уходит в полупаралич: не падает, но и не работает. Разбираем параметры, которые чаще всего настроены не так. 1️⃣ maximumPoolSize: «больше» ≠ «лучше» Классика — поставить 100 «на всякий, у нас тысяча юзеров онлайн». Но каждый коннекшн к Postgres — это процесс на стороне БД, память, контекст транзакции. 100 параллельных запросов от одного бэкенда — это не параллельность, а очередь: CPU и диск всё равно одни. Формула из pool sizing guide самого HikariCP: connections = (core_count * 2) + effective_spindle_count Для 8 ядер + SSD это ~17 коннекшенов. И помни про реплики: 5 подов по 20 = 100 коннекшенов к одной базе только от этого сервиса, а у Postgres max_connections обычно 100–200. Перешагнул → FATAL: sorry, too many clients already. Прежде чем раздувать пул, загляни в pg_stat_activity. В 9 из 10 случаев там медленные запросы без индекса, idle in transaction или локи. Больше коннекшенов = больше параллельных медленных запросов. 2️⃣ minimumIdle = maximumPoolSize, а не половине Туториалы любят min-idle: 5 / max: 20 → «в холостом держим 5, в пик расширяемся». Звучит экономно, а на деле каждый новый коннекшн — это TCP + TLS + auth + инициализация сессии = 30–100 мс сверху на первые запросы при расширении. Спайк на старте дня → красивый пик p99 → ложный инцидент. HikariCP проектировался как фиксированный пул. Дефолт minimumIdle == maximumPoolSize, и автор прямо просит не трогать. Хочешь экономить — уменьшай maximumPoolSize, а не разноси его с minimumIdle. 3️⃣ maxLifetime: всегда меньше любого внешнего таймаута Дефолт 30 минут. Проблема: если что-то в инфраструктуре закроет коннекшн раньше, чем HikariCP его «состарит», ловишь Connection is closed. А закрыть может многое: ▪️ AWS NLB — idle TCP через 350 сек ▪️ AWS ALB — 60 сек ▪️ корпоративный фаервол — 5–15 мин, без логов ▪️ PgBouncer server_idle_timeout — 600 сек ▪️ Postgres idle_in_transaction_session_timeout — нередко 10 мин Ставь с запасом 30–60 сек меньше самого короткого внешнего таймаута. Не видишь внешних таймаутов — 300000 (5 мин) разумный дефолт. 4️⃣ keepaliveTime: чтобы коннекшн не протух в idle Дефолт 0 → выключено. В средах с агрессивным conntrack или короткими idle-таймаутами файрвола соединение тихо рвётся, и следующий клиент получает Broken pipe / Connection reset на первом же запросе. Включаешь — и HikariCP раз в N мс гоняет SELECT 1 по простаивающим коннекшенам. spring.datasource.hikari: keepalive-time: 30000 # 30 сек max-lifetime: 300000 # keepalive ОБЯЗАТЕЛЬНО меньше Минимум — 30 сек, меньше HikariCP проигнорит. Нагрузка копеечная: 20 коннекшенов = 40 пингов в минуту. 5️⃣ connectionTimeout: это твой SLA Дефолт 30 сек — почти всегда абсурд. Если API должно отвечать за 500 мс, клиент через 30 сек уже давно получил 504 от ingress. А бэкенд продолжает копить запросы, потоки висят в ожидании коннекшна, сервис застревает на минуты. Лучше fail fast: spring.datasource.hikari.connection-timeout: 2000 # 2 сек Пул исчерпан → быстрый 503, очередь не растёт, алерт срабатывает сразу. Сверху можно навесить circuit breaker (Resilience4j). ⚠️ И отдельно про Actuator: /actuator/health/db дёргает базу. При исчерпанном пуле он тоже встаёт в очередь → DOWN → k8s liveness рестартит под → нагрузка переезжает на соседей → каскад. Лечится коротким connectionTimeout + liveness, который не трогает базу вообще. И главное помни: HikariCP — это просто пул. Если в сервисе медленные запросы без индексов, ни твики таймаутов, ни раздувание пула не помогут — получишь больше параллельных медленных запросов, и база встанет ещё быстрее. Сначала pg_stat_activity, pg_stat_statements, EXPLAIN ANALYZE — потом настройка пула. ══════ Навигация ══════ Вакансии • Задачи • Собесы 🐸 Библиотека джависта #Enterprise
1 936
20
@Scheduled(fixedRate = 5000) — предыдущее выполнение заняло 8 секунд. Когда запустится следующее?
2 018