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

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

الذهاب إلى القناة على Telegram

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

إظهار المزيد

📈 نظرة تحليلية على قناة تيليجرام Библиотека джависта | Java, Spring, Maven, Hibernate

تُعد قناة Библиотека джависта | Java, Spring, Maven, Hibernate (@javaproglib) في القطاع اللغوي الروسية لاعباً نشطاً. يضم المجتمع حالياً 22 427 مشتركاً، محتلاً المرتبة 6 056 في فئة التكنولوجيات والتطبيقات والمرتبة 30 006 في منطقة روسيا.

📊 مؤشرات الجمهور والحراك

منذ تأسيسه في невідомо، حقق المشروع نمواً سريعاً وجمع 22 427 مشتركاً.

بحسب آخر البيانات بتاريخ 10 يونيو, 2026، تحافظ القناة على نشاط مستقر. خلال آخر 30 يوماً تغيّر عدد الأعضاء بمقدار -83، وفي آخر 24 ساعة بمقدار -4، مع بقاء الوصول العام مرتفعاً.

  • حالة التحقق: غير موثّقة
  • معدل التفاعل (ER): يبلغ متوسط تفاعل الجمهور 8.56‎%. وخلال أول 24 ساعة من النشر يحصد المحتوى عادةً 4.99‎% من ردود الفعل نسبةً إلى إجمالي المشتركين.
  • وصول المنشورات: يحصل كل منشور على متوسط 1 921 مشاهدة. وخلال اليوم الأول يجمع عادةً 1 120 مشاهدة.
  • التفاعلات والاستجابة: يتفاعل الجمهور بانتظام؛ متوسط التفاعلات لكل منشور يبلغ 13.
  • الاهتمامات الموضوعية: يركز المحتوى على مواضيع رئيسية مثل джависта, навигация, jooq, corejava, hibernate.

📝 الوصف وسياسة المحتوى

يصف المؤلف القناة بأنها مساحة للتعبير عن الآراء الذاتية:
Все самое полезное для Java-разработчика в одном канале. Список наших каналов: https://t.me/proglibrary/9197 Для обратной связи: @proglibrary_feeedback_bot По рекламе: @proglib_adv РКН: https://gosuslugi.ru/snet/67a5bbda1b17b35b6c1a55c4

بفضل وتيرة التحديث المرتفعة (أحدث البيانات بتاريخ 11 يونيو, 2026) تحافظ القناة على حداثتها ومستوى وصول مرتفع. وتُظهر التحليلات تفاعلاً نشطاً من الجمهور، ما يجعلها نقطة تأثير مهمة ضمن فئة التكنولوجيات والتطبيقات.

22 427
المشتركون
-424 ساعات
-327 أيام
-8330 أيام
جذب المشتركين
يونيو '26
يونيو '26
+27
في 0 قنوات
مايو '26
+136
في 3 قنوات
Get PRO
أبريل '26
+85
في 5 قنوات
Get PRO
مارس '26
+69
في 1 قنوات
Get PRO
فبراير '26
+103
في 2 قنوات
Get PRO
يناير '26
+75
في 0 قنوات
Get PRO
ديسمبر '25
+98
في 4 قنوات
Get PRO
نوفمبر '25
+94
في 1 قنوات
Get PRO
أكتوبر '25
+117
في 2 قنوات
Get PRO
سبتمبر '25
+120
في 1 قنوات
Get PRO
أغسطس '25
+93
في 4 قنوات
Get PRO
يوليو '25
+78
في 0 قنوات
Get PRO
يونيو '25
+118
في 0 قنوات
Get PRO
مايو '25
+106
في 0 قنوات
Get PRO
أبريل '25
+178
في 15 قنوات
Get PRO
مارس '25
+294
في 52 قنوات
Get PRO
فبراير '25
+200
في 31 قنوات
Get PRO
يناير '25
+231
في 51 قنوات
Get PRO
ديسمبر '24
+196
في 38 قنوات
Get PRO
نوفمبر '24
+216
في 48 قنوات
Get PRO
أكتوبر '24
+253
في 36 قنوات
Get PRO
سبتمبر '24
+339
في 37 قنوات
Get PRO
أغسطس '24
+319
في 36 قنوات
Get PRO
يوليو '24
+422
في 35 قنوات
Get PRO
يونيو '24
+372
في 34 قنوات
Get PRO
مايو '24
+460
في 35 قنوات
Get PRO
أبريل '24
+438
في 38 قنوات
Get PRO
مارس '24
+610
في 30 قنوات
Get PRO
فبراير '24
+573
في 32 قنوات
Get PRO
يناير '24
+561
في 26 قنوات
Get PRO
ديسمبر '23
+466
في 36 قنوات
Get PRO
نوفمبر '23
+372
في 3 قنوات
Get PRO
أكتوبر '23
+503
في 23 قنوات
Get PRO
سبتمبر '23
+676
في 0 قنوات
Get PRO
أغسطس '23
+570
في 0 قنوات
Get PRO
يوليو '23
+446
في 0 قنوات
Get PRO
يونيو '23
+448
في 0 قنوات
Get PRO
مايو '23
+560
في 0 قنوات
Get PRO
أبريل '23
+226
في 0 قنوات
Get PRO
مارس '23
+762
في 0 قنوات
Get PRO
فبراير '23
+359
في 0 قنوات
Get PRO
يناير '23
+387
في 0 قنوات
Get PRO
ديسمبر '22
+469
في 0 قنوات
Get PRO
نوفمبر '22
+542
في 0 قنوات
Get PRO
أكتوبر '22
+289
في 0 قنوات
Get PRO
سبتمبر '22
+368
في 0 قنوات
Get PRO
أغسطس '22
+439
في 0 قنوات
Get PRO
يوليو '22
+557
في 0 قنوات
Get PRO
يونيو '22
+503
في 0 قنوات
Get PRO
مايو '22
+275
في 0 قنوات
Get PRO
أبريل '22
+383
في 0 قنوات
Get PRO
مارس '22
+399
في 0 قنوات
Get PRO
فبراير '22
+225
في 0 قنوات
Get PRO
يناير '22
+364
في 0 قنوات
Get PRO
ديسمبر '21
+334
في 0 قنوات
Get PRO
نوفمبر '21
+297
في 0 قنوات
Get PRO
أكتوبر '21
+263
في 0 قنوات
Get PRO
سبتمبر '21
+329
في 0 قنوات
Get PRO
أغسطس '21
+425
في 0 قنوات
Get PRO
يوليو '21
+371
في 0 قنوات
Get PRO
يونيو '21
+334
في 0 قنوات
Get PRO
مايو '21
+586
في 0 قنوات
Get PRO
أبريل '21
+702
في 0 قنوات
Get PRO
مارس '21
+633
في 0 قنوات
Get PRO
فبراير '21
+660
في 0 قنوات
Get PRO
يناير '21
+568
في 0 قنوات
Get PRO
ديسمبر '20
+18 204
في 0 قنوات
التاريخ
نمو المشتركين
الإشارات
القنوات
11 يونيو+1
10 يونيو+2
09 يونيو0
08 يونيو+1
07 يونيو+1
06 يونيو+5
05 يونيو0
04 يونيو+5
03 يونيو+3
02 يونيو+4
01 يونيو+5
منشورات القناة
▶️ Запись 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