Постмортем сервиса quay.io (private docker container image registry)
На сервисе случилось 3 сбоя - 19 мая, 28 мая, 9 июня.
Сбой выражался почти в полной невозможности для пользователей писать в сервис и очень медленно читать. Первым делом увидели возросшее количество коннекций к базе, которые ее намертво блокировали.
Один из сервисов который 6 лет до этого работал на стандартных настройках пула БД, вдруг начал очень сильно потреблять подключения. Сделали исправление, ограничили количество подключений, стали наблюдать.
Наконец только при последнем, третьем сбое удалось разглядеть паттерн. Незадолго до частичной недоступности сервиса, было много обращений на очень редко используемый сервис.
В нем было пару запросов которые были очень неоптимальными. На малой нагрузке сервис не давал сбоев (и на него не делали аналитику, мало клиентов же) но внезапно его стали использовать активнее и он повлиял на всю систему. Запросы оптимизировали и все восстановилось. На это понадобилось почти 3 недели.
Из выводов:
"You can never have enough data about who and what are using your service. Since Quay “just worked”, we never needed to spend much time analyzing our traffic shape to handle the load. This created a false sense of security that the service would scale indefinitely.
Understand the impact of every one of your service’s features. App Registry was seldom used by our customers, so it wasn’t a major priority for our team. When you have seldom used features in your product, bugs don’t get filed and developers stop looking at the code. It’s easy to assume that this puts no burden on the team- until suddenly it is part of a major incident."
https://red.ht/2XOHgIv
Post #205
384