tgoop.com/javaproglib/6509
Create:
Last Update:
Last Update:
Каждый разработчик хоть раз сталкивался с багом, который заставляет сердце уйти в пятки. Особенно, если это касается продакшена. Делимся реальными историями из жизни, когда всё пошло не по плану.
История подписчика:
Я работал в команде, которая разрабатывала сервис для обработки платежей. Вроде бы ничего сложного — получаем запрос, проверяем данные, отправляем в банк. Но однажды клиенты начали жаловаться: платежи зависают, интерфейс тормозит, а логи заполняются непонятными ошибками.
Первая мысль: проблемы с базой. Проверили — всё ок. Вторая гипотеза: сеть. Но серверы были в порядке. Тогда мы начали копать глубже… и нашли виновника. Это был бесконтрольный рост количества потоков.
Код создавал новый поток на каждый входящий запрос, но их никто не закрывал. В условиях небольшой нагрузки это не было заметно, но когда число пользователей выросло, сервер просто задохнулся. Потоки накапливались, память забивалась, а система начинала вести себя непредсказуемо.
В итоге срочно внедрили пул потоков, который ограничил их количество и позволил переиспользовать существующие. Это сразу же стабилизировало работу сервиса.