More posts — page 3

51 posts total
X
XBox DNS
@xbox_dns
53.3K

КАК МЫ 12 ЧАСОВ ЛОВИЛИ ПРИЗРАКА

Ребят, выдыхаем. Переезд на новую инфраструктуру официально завершен. Всё крутится в штатном режиме, причем с солидным запасом под новые нагрузки. Но путь к этому дзену был... скажем так, незабываемым.

Заваривайте чай, сейчас будет лонгрид и история про боль, страдания и один маленький thread-lock

КАКОВ БЫЛ ПЛАН?

Идея была максимально логичной: собрать весь наш зоопарк под одной крышей. Раньше обычный DNS и шифрованный (DoT/DoH) жили на разных серверах. Мы решили объединить всё под одним балансировщиком.

Профит очевиден: общий быстрый кеш, один набор правил вместо трех, и главное — возможность наконец-то нормально масштабироваться без костылей. Звучало идеально...

А ПОТОМ НАЧАЛСЯ ЦИРК 🎪

Переключаем трафик. Первые минуты — красота. А дальше сервера начинают жестко флапать. То работает как швейцарские часы, то очереди залипают намертво.

Смотрим в мониторинг: процессор свободен, всё зелёное, ресурсы есть. А пакеты просто лежат в очереди, и их никто не забирает. В итоге консоли, роутеры, мобилки и Вы все сидите без интернета...

Мы начали копать. Раскидали по ядрам? Не помогло. Разнесли сетевые прерывания? Стало чуть легче, но суть не поменялась. Крутили буферы, воркеры, лимиты... Это было похоже на игру «ударь крота» — затыкаешь одну дыру, тут же рвется в другом месте. Просто вдумайтесь: 251 миллион переполнений TCP/UDP и дропов за 20 минут. Карл! Спасибо, чтот ваши DoT/DoH-клиенты так любят ретраить, как вне себя...

ЧТО ЭТО ВООБЩЕ БЫЛО? 🕵️‍♂️

Спустя 12 часов дебага мы полезли в документацию балансировщика и нашли там одну маленькую табличку, которая всё объяснила, су..а...

Оказывается, в софте есть такая архитектурная подлянка — «глобальная блокировка». Грубо говоря, один замок на весь процесс. Когда любой из 128 потоков обрабатывает кастомное правило через Lua-экшен, все остальные стоят в очереди и покорно ждут.

А у нас прямо на горячем пути висело два таких правила. При 100k QPS запросов в секунду это 200 000 захвата лока. DoT-потоки (которых больше и они агрессивнее) постоянно забирали замок себе, а легкие потоки обычного DNS тупо стояли в сторонке.

Чем дольше ждали — тем больше клиентов отваливалось в TCP, тем сильнее всё тормозило.

Вообщем каскадный отказ на ровном месте. И всё это на полупустых ядрах! Проблема была не в железе, а в одном узком горлышке софта.

ПОЧЕМУ НЕ СТРЕЛЯЛО РАНЬШЕ? 🤔

Стреляло. Просто мы этого не замечали.

Раньше DoT/DoH трафик жил отдельно и конкурировал сам с собой. А тут мы заперли тяжеловесов (TLS) и легковесов (обычный DNS) в одной комнате с одним ключом на выход. И тяжеловесы просто задавили мелких, а потом и себя...

КАК МЫ ЭТО ПОЧИНИЛИ 🛠

Переписали проблемные правила так, чтобы они вообще не дергали эту глобальную блокировку.

Жестко развели потоки по разным группам ядер, а процессы по отдельным NUMA-нодам. Шифрованный DNS теперь крутится на своих мощностях, обычный — на своих.

ИТОГ ✅

Мониторинг зелёный. Очереди пустые. Процессор отдыхает.

Мы спокойно перевариваем 100 000+ запросов в секунду и держим 80 000+ одновременных TLS-соединений.

Спасибо всем, кто ждал и не паниковал. Выдыхаем. И едем дальше! 🚙

Если проект вам по душе — поддержите его, это помогает нам расти, оставаться быстрыми и независимыми 💫

С уважением, Команда Xbox DNS 👍

Р
Рецепты Простых Блюд - Рецепты | Еда | Супы | Салаты | Гарниры
@receptpb
2.3K

🥣 Сделала кастрюлю — и все попросили добавку

🔖 Ингредиенты:

Куриные бёдра — 500 г Лук — 2 шт. Морковь — 2 шт. Зелень — по вкусу Перец — по вкусу Соль — по вкусу

Картофель — 6 шт. Шампиньоны — 400 г Плавленый сыр — 300 г Укроп — по вкусу

🧑‍🍳 Приготовление:

1️⃣ Сварить бульон из курицы, лука и моркови 2️⃣ Достать овощи и процедить бульон 3️⃣ Обжарить лук и морковь 4️⃣ Добавить грибы в бульон 5️⃣ Через 10 минут добавить картофель 6️⃣ Выложить зажарку 7️⃣ Варить до готовности картофеля 8️⃣ Добавить плавленый сыр и размешать 9️⃣ Посыпать укропом

💡 Совет:

Добавляй сыр не сразу весь, а частями — так он растворится ровно и суп получится гладким, без комочков.

Рецепты Простых Блюд👈Подпишитесь

P
Prog books
@frontendbooksit
2.1K

👣 Как Rust обманывает процессор: тайная жизнь niche-оптимизации, drop flags и MIR

Большинство статей про Rust заканчиваются на borrow checker и lifetimes, как будто внутри компилятора живёт только проверяльщик заимствований и злой шрифтовый дизайнер для сообщений об ошибках. На деле там целый зоопарк механизмов, о которых редко пишут даже на конференциях. Я собрал несколько по настоящему любопытных вещей, которые меняют представление о том, как устроен язык изнутри, и подкрепил каждый сюжет кодом, который можно скопировать и проверить самому.

Начнём с того, чего никто не ждёт. Знакомая всем конструкция Option ссылки занимает ровно столько же байт, сколько и обычная ссылка. Это кажется магией: ведь у Option должен быть тег, отличающий Some от None. Никакого тега нет. Компилятор знает, что ссылка в Rust никогда не может быть нулевой, и использует нулевой адрес как представление варианта None. Этот трюк называется niche optimization, и он работает гораздо шире, чем принято думать.

Проверим руками: https://uproger.com/kak-rust-obmanyvaet-proczessor-tajnaya-zhizn-niche-optimizaczii-drop-flags-i-mir/

M
Max Zarev
@maxzarev
1.5K

Зачем ходить за хлебом пешком, если есть болид F1?

Может, потому что может показаться, что болид F1 — это для гонщиков и для гоночной трассы?

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

Эти агенты ближе всех к тому самому «Общему ИИ», на который все дрочат.

Многие туда не идут, потому что думают: «Ну бля, это для вайбкодинга, мне-то нах оно?» Тем временем те, кто схавал эту мету, начинают решать все задачи через этих агентов.

Например: мой клиент @andeyzenin после внедрения Claude Code CLI, которая позиционируется only for developers, умножил свою результативность кратно и уже внедряет эти инструменты своим клиентам. Его клиенты просто охуевают от качества и объема персонализированных результатов, которые он дает.

Можно либо начать делать кратно больше за N времени, либо делать столько же, а в остальное ебланить или устроится на вторую и третью работу.

Смешно, что сейчас реально период, когда можно устроиться на несколько работ где объем задач не учитывает наличие ИИ инструментов, делать ровно столько сколько просят и делать недельные задачи за несколько часов 😄 (задачи которые делаются с компа, речь не про завод)