Деградация платёжного провайдера кладёт весь сервис
Внешний платёжный провайдер начал отвечать за 20–30 секунд вместо обычных 200 мс. Через несколько минут ваш сервис перестал отвечать целиком: висят даже ручки, которые к платежам не обращаются. В коде исходящий вызов сделан без явного таймаута, а при ошибке выполняется до пяти повторов подряд.
Выберите меры, которые действительно устраняют каскадный отказ (верных вариантов два).
правильных вариантов может быть несколько
- Поставить на исходящий вызов таймаут заведомо меньше клиентского и сразу отдавать понятную ошибку
- Ограничить число одновременных вызовов провайдера и размыкать цепь при серии ошибок
- Увеличить таймаут клиента и число повторов, чтобы запросы всё-таки доходили до провайдера и оплата не срывалась
- Добавить реплик сервиса за балансировщиком: свободные инстансы разберут накопившиеся запросы, пока провайдер тормозит
- Перенести вызов провайдера в worker threads, чтобы ожидание ответа не занимало event loop основного потока
