TGViewer
Бессонный кодер Бессонный кодер @sleeplesscode · 4.24K subscribers
Post #425 3.88K
Как поспали? Надеюсь, хорошо! А вот наша команда и серверы с компами ХРЕНАЧИЛИ всю ночь! А ещё я наконец начал окунаться в невероятно интересный мир highload-распределённых вычислений, но обо всём по порядку.

Вы уже не раз слышали о нашей системе контентной модерации медиа в Стражнике, и в этот раз мы опять о ней. 😏

20:02 Files in queue: 7
Я: @(тег модератора), допилил механизм ротации файлов, отправил на первичный проход, щас будет мясо.


Вечером 02.03 я написал небольшое обновление, которое позволяло делать ротацию файлов в очереди на ручную модерацию. Не поняли? Сейчас поясню.

Хотя большинство файлов (а в некоторых категориях — меньшинство) проверяются нейросетью, рано или поздно они проходят ручную модерацию: кто-то из нашей команды смотрит на результат работы модели и либо подтверждает её вердикт, либо нет. Если нейросеть ошиблась, на основе таких случаев мы дообучаем её, снижая процент ошибок.

Суть обновления была в том, чтобы отправлять на повторную проверку файлы, которые были проверены только моделью, причём сильно старыми её версиями. Это позволяло находить ошибки, которые раньше были незаметны.

20:29 Files in queue: 0
Я: Их там чёт так много, что он встал, обновляя...


20:33 Files in queue: 0
Я: Оно встало на seq scan, начал строить индексы.
Модератор: У тебя всё встало, я не могу отдать работу.
Я: Ага, индекс строится.
Модератор: А там настолько много?
Я: Похоже, на 10 минут.


НО! Кое-что пошло не так.

Система зависла и перестала отвечать. Тогда мы ещё не знали почему. Вместо того чтобы отправить на перепроверку 10–20 тысяч файлов, из-за опечатки в коде отправились... 2 МИЛЛИОНА ФАЙЛОВ.

Откатить было уже поздно.

20:37 Files in queue: 1 926 629
Имперский Стражник: 1926629 files moved (уведомление о завершении ротации)
Модератор: Куда...? Сколько...? СКОЛЬКО?!


В этот момент мой коллега уже понял, что произошло. А я ещё нет — копался в терминале, пытаясь разобраться, почему операция на 10 тысячах файлов вызвала такое зависание.

20:53 Files in queue: 1 925 896
Я: ***** Я CLEAR-ы ***** на второй круг
Модератор: АХАХХАХАХВХАХАХАХАХАХАХАХАХА
Модератор: Кстати, ты мне стикеры по полминуты отдаёшь.
Я: Ну да, там вместе с этим ещё внутренние проверки + БД чистит мусор, там щас дон ******


Я был очень удивлён ошибкой и начал мониторить работу Стражника, нагрузку на сервер, CPU. Включил свою видеокарту в процесс и запустил на ней дополнительные воркеры.

Но была маленькая проблема: наш основной сервер, отвечающий за API, базу данных и координацию распределённых вычислений... был при смерти.

21:10 Files in queue: 1 924 994


21:22 Files in queue: 1 923 877


21:30 Files in queue: 1 922 260


22:08 Files in queue: 1 918 838


Работа шла, но скорости хватало только для обычной загруженности, а у нас в очереди 2 миллиона файлов. И не забываем, что пользователи продолжают подкидывать новые.

Тут я осознал: надо что-то делать.

22:38 Files in queue: 1 915 550
Модератор: Когда там закончится твой затуп сервера?
Я: Уже отошёл, но мы упёрлись в скорость отдачи файлов сервером.
Модератор: Ты же в курсе, что с такой скоростью (1 стикер в секунду) мы это будем делать 23 дня?
Я: Думаю, стартануть реле загрузки, которое частично разгрузит и ускорит процесс.
Я: Только его надо написать. D:


Тут я упёрся в лимит размера сообщения в телеге, а если вам было интересно что было дальше, ставьте реакции и пишите комментарии ;3

#downTime
  • 👍 122
  • 🔥 32
  • 🆒 16
  • 😨 7
  • ⚡ 2
  • ❤‍🔥 2
  • ❤ 1
  • 🤩 1
  • 🍌 1
  • 🍓 1
  • 💅 1
More from @sleeplesscode
  1. Oct 5, 2026Post #923
  2. Oct 1, 2026Post #914
  3. Sep 18, 2026Post #913
  4. Sep 17, 2026Post #912
  5. Sep 15, 2026Post #911
  6. Sep 14, 2026Post #909
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →