JAVAPROGLIB Telegram 6663
📣 Один таймер — тысяча проблем

Один из подписчиков поделился кейсом, который едва не превратился в катастрофу — и всё из-за, казалось бы, безобидного таймера.

История от подписчика:
В микросервисе на Spring Boot был реализован механизм повторных попыток через ScheduledExecutorService. Всё шло нормально — до запуска в проде.

Через пару дней после релиза начали сыпаться алерты: увеличилось потребление памяти, а сервис стал отвечать с задержками. Логи молчали, метрики CPU были в порядке, но heap распухал как на дрожжах.

После анализа heap dump выяснилось: каждый раз при неудачной операции создавался новый ScheduledFuture, который не отменялся и оставался висеть в памяти. Таймеры копились, ссылки не освобождались, GC с ума сходил.

Ввели пул повторных задач с ограничением количества активных таймеров и явной отменой по завершении. Также поставили алерты на рост количества активных future’ов. Память стабилизировалась, сервис вернулся к нормальной работе.


💬 Последняя такая “незаметная” проблема на проде?

🐸 Библиотека джависта #междусобойчик
Please open Telegram to view this post
VIEW IN TELEGRAM
👍92🔥2😁1



tgoop.com/javaproglib/6663
Create:
Last Update:

📣 Один таймер — тысяча проблем

Один из подписчиков поделился кейсом, который едва не превратился в катастрофу — и всё из-за, казалось бы, безобидного таймера.

История от подписчика:

В микросервисе на Spring Boot был реализован механизм повторных попыток через ScheduledExecutorService. Всё шло нормально — до запуска в проде.

Через пару дней после релиза начали сыпаться алерты: увеличилось потребление памяти, а сервис стал отвечать с задержками. Логи молчали, метрики CPU были в порядке, но heap распухал как на дрожжах.

После анализа heap dump выяснилось: каждый раз при неудачной операции создавался новый ScheduledFuture, который не отменялся и оставался висеть в памяти. Таймеры копились, ссылки не освобождались, GC с ума сходил.

Ввели пул повторных задач с ограничением количества активных таймеров и явной отменой по завершении. Также поставили алерты на рост количества активных future’ов. Память стабилизировалась, сервис вернулся к нормальной работе.


💬 Последняя такая “незаметная” проблема на проде?

🐸 Библиотека джависта #междусобойчик

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




Share with your friend now:
tgoop.com/javaproglib/6663

View MORE
Open in Telegram


Telegram News

Date: |

How to Create a Private or Public Channel on Telegram? With the “Bear Market Screaming Therapy Group,” we’ve now transcended language. Telegram channels enable users to broadcast messages to multiple users simultaneously. Like on social media, users need to subscribe to your channel to get access to your content published by one or more administrators. 6How to manage your Telegram channel? In the “Bear Market Screaming Therapy Group” on Telegram, members are only allowed to post voice notes of themselves screaming. Anything else will result in an instant ban from the group, which currently has about 75 members.
from us


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