Технический пост: падение трех гигантов

Вчера была серьезная аварийная ситуация. На восстановление ушло около 8 часов. Из-за чего?

ГолдВойс долгое время держался на трех MariaDB серверах, объединенных в Galera Cluster. Так как тут хранятся данные блокчейна, естественно таблицы были в InnoDB + партиции. Увеличение транзакций в блоках привело к той состоянии гонки, о которой было написано в прошлых постах.

На этот раз целостность базы была нарушена, запросы сбились из-за указателей и часть таблиц попали в заблокированное состояние. Первым отказала таблица пользователей, вторым следом упала таблица сессий, третьей проблемой было падение таблицы с кэшем. Это привело к чудовищным лагам и перегрузам. Процесс подвисли и как ком исчерпали сами себя. Две более слабых машины тут же упали, заявив, что не хотят синхронизироваться и запускаться из-за сбитого State в третьей машине.

Отключив весь сайт было принято снять актуальный бекап с еще стоявшего сервера и развернуть все заново.  Параллельно с процессом бекапа/импорта были переработаны механизмы хранения юзеров и обновление их action_time (время последнего действия). Этот параметр необходим для разных выборок индикатора пользователей. Допустим, сегодня уже был переделан блок и снова на главной странице заработала информация с онлайном пользователей в блокчейне. Но с более сложными выборками, такими как онлайн друзей — пока, естественно, проблема.

Сервера успешно перезапущены, блоки дособраны, часть инфраструктуры изменена, нагрузки снижены, но не стоит расслабляться. Нужно отрефакторить часть методов, которые работали с прошлыми таблицами под новую структуру в redis. И продолжать оптимизацию.

PS Расширен сервер прокси-гейт изображений, теперь он сможет содержать в 2 раза больше данных. Скалировать будем при необходимости.

Спасибо за поддержку и понимание!

goldvoicegolosголосголдвойсотчет
215
356.480 GOLOS
0
В избранное
GoldVoice
Социальный клуб
215
0

Зарегистрируйтесь, чтобы проголосовать за пост или написать комментарий

Авторы получают вознаграждение, когда пользователи голосуют за их посты. Голосующие читатели также получают вознаграждение за свои голоса.

Зарегистрироваться
Комментарии (15)
Сортировать по:
Сначала старые