TGViewer
DevTwitter | توییت برنامه نویسی DevTwitter | توییت برنامه نویسی @devtwitter · 32.7K subscribers
Post #11324 6.61K
خیلی وقت‌ها توی لاگ Spring Boot این خطا رو می‌بینیم 

Unable to acquire JDBC Connection
Apparent connection leak detected

و اولین واکنش معمولاً اینه:
مقدار pool رو بزرگ کنیم
سرور رو ری‌استارت کنیم

اما حقیقت چیز دیگه‌ایه

در ۹۰٪ موارد، مشکل از Transaction اشتباه یا بدجاست
نه از دیتابیس، نه از Hikari.
وقتی از entityManager استفاده میکنیم و روی سرویس Transactional نمیذاریم:

یک Connection از Hikari گرفته می‌شه
کلاس EntityManager کامیت یا مدیریت connection را به Spring / JPA واگذار نمی‌کنه و connection ممکنه تا پایان GC یا زمان خیلی طولانی نگه داشته بشه
تمام Connectionهای Pool سریع تمام می‌شن و درخواست‌های بعدی منتظر می‌مونن
کل سیستم می‌خوابه

راه‌حل واقعی و Best Practice:
️ بالا سر متد های سرویس از Transactional(readOnly = true) استفاده کنیم و کوعری های خودمونو با entityManager فقط داخل همان Transaction اجرا کنیم
️ متد های Transactional کوتاه و متمرکز بنویسیم

اینجوری وقتی transaction کامیت یا رول بک میشه connection هم آزاد می‌شه و پروداکشن سالم میمونه

@DevTwitter | <Mani Nasrollahi/>
  • ❤ 16
  • 👍 2
More from @devtwitter
  1. Oct 18, 2026مفیدتربن ابزاری که با AI بزای خودم ساختم. ابزار کنترل داکر به صورت دسکتاپ، جایگزین داکر دس…
  2. Oct 18, 2026هر چند روز یکبار، هارنس اختصاصی Deepseek به شما ۵ یوآن کردیت میده که به رایگان از مدل‌هاش…
  3. Oct 18, 2026کلاد کد (Claude Code) حالا می‌تونه سرعت سایتت رو با Lighthouse بررسی کنه، مشکلات کندی رو ب…
  4. Oct 18, 2026افزونه گوگل فلو که قبلا آموزشش رو دادیم ظاهراً برای اکثر افراد از کار افتاده یکی از دوستان…
  5. Oct 17, 2026تست‌نویسی با زبان معمولی ابزار e2e تست‌های وب و موبایل رو با دستور انگلیسی اجرا می‌کنه. بع…
  6. Oct 17, 2026جایگزین اختصاصی برای React؟! تلگرام وب عملا Zero dependency ساخته شده. توی دنیای وب که هر…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →