Обновить
128K+

Высоконагруженные системы *

Методы получения высокой производительности систем

182,88
Рейтинг
Сначала показывать
Порог рейтинга
Уровень сложности

Как я сделал mmap-базу для 4 миллионов товаров и 700 тысяч посадочных страниц

Уровень сложностиСложный
Время на прочтение13 мин
Охват и читатели1.6K

Сделал mmap-базу для 4 млн товаров и получил ~35k RPS. Поиск оказался настолько быстрым, что bottleneck пришлось искать уже после базы. В итоге оптимизировал JSON, получил ~1.8× прироста HTTP workload — и упёрся в w.Write.

Читать далее

Новости

753B на одной видеокарте: разбор FreeToken

Уровень сложностиСредний
Время на прочтение15 мин
Охват и читатели13K

Бывает так: сидишь, листаешь ленту, и в очередной раз натыкаешься на пост, где стафф-инженер из солнечной Калифорнии крутит свежую модельку на паре RTX PRO 6000 общей стоимостью с подержанную машину. Ты смотришь на свою RTX 4060 в ноутбуке, который покупал «не только для игр», и понимаешь: ну ладно, это не для нас.

Так вот, это как раз для нас. На той самой ноутбучной 4060 с восемью гигабайтами и урезанным вдвое PCIe-линком можно получить 39.3 tok/s на 35-миллиардной модели — быстрее, чем медианная скорость декода Codex в проде. Вопрос был не в железе, а в софте, который это железо обслуживает.

Разбираем FreeToken — движок для локального инференса MoE-моделей от команды, которая до этого сделала vLLM и SGLang.

Запустить AGI на слабом железе

Почему мы перестали собирать персональную ленту SQL-запросами

Уровень сложностиСредний
Время на прочтение6 мин
Охват и читатели66K

Как собрать персональную ленту для миллионов пользователей, когда обычный SQL-запрос с JOIN становится слишком тяжёлым? Рассказываю, как мы заранее собираем ленты, обновляем их через события и храним готовый результат в MongoDB.

Читать далее

Как объединить личные AI подписки в единый пул

Уровень сложностиСредний
Время на прочтение5 мин
Охват и читатели6.6K

Представим ситуацию: вы - руководитель средней IT-команды. В наше время у каждого сотрудника, от технического писателя, до архитектора, есть платная подписка на AI-инструменты. Так как это производственная необходимость - компания компенсирует затраты на личные подписки каждому члену команды.

Но у всех сотрудников совершенно разные затраты, и далеко не каждый будет тратить эффективно свою подписку.

Возможно, подписки можно как-то объединить в единый пул? Именно этот вопрос мы будем рассматривать в нашей статье

Читать далее

PCIe 6.0 SSD выходят на рынок: зачем нужны накопители со скоростью под 30 ГБ/с и кто их будет выпускать

Уровень сложностиПростой
Время на прочтение6 мин
Охват и читатели9K

Спецификацию PCIe 6.0 утвердили ещё в начале 2022 года, но первые серийные SSD с новым интерфейсом появились только в 2026-м. Пока речь идёт исключительно о серверных моделях, скорости у них уже вплотную приблизились к 30 ГБ/с. Для обычных компьютеров такие накопители пока остаются делом будущего: потребительский рынок всё ещё ограничен PCIe 5.0.

Почему на вывод нового стандарта на рынок ушло четыре года? Дело не только и не столько в сложности технологии. До недавнего времени рынку попросту не особенно нужны были SSD с такой пропускной способностью. Ситуацию изменил бум ИИ: в серверах с десятками ускорителей скорость хранилища сама начала становиться узким местом. Поэтому PCIe 6.0 сейчас приходит прежде всего в дата-центры, а не в домашние ПК. Но давайте разбираться, что это за стандарт, зачем он нужен и когда станет распространенным.

Читать далее

Реинкарнация проекта через cursor

Уровень сложностиПростой
Время на прочтение4 мин
Охват и читатели7.7K

В далеком 2010 году я решил вступить в партию GameDev ибо на рынке было глухо средь космических стратегий. Знаменитый СтарКвейк на стратегию никак не тянул, в сети главенствовал Огейм и его бесчисленные клоны. Но три ископаемых и достаточно простенький вариант развития колоний давил на меня отсутствием реалистичности. Немного пройдясь по гитхабам было решено писать с нуля.

Вариантов на тот момент особо не было, фронт на Flash бэк на PHP + MySQL - классика того времени. Писалось в одно лицо с привлечением художника и дизайнера, за что им бесконечное спасибо! Проект сначала жил на моем ноутбуке, затем на скромном VPS и под конец перебрался на качественный дедик в хецнере (да, были времена : ) с кучей ядер, памяти и диска. В период расцвета онлайн был 100-150 игроков. Но, как обычно, донат начал снижаться, и когда проект перестал оплачивать сервер я подождал пару лет и понял что "лошадь умерла, можно с нее слезать"

Параллельно проект ушел в 2019 на гитхаб, где был доступен абсолютно всем вплоть до недавнего времени. Единственная проблема - бэкап БД не уцелел, точнее уцелела версия 2012 года, в которой много чего не хватало.

Примерно месяц назад мне закралась мысль, а почему бы не использовать курсор для реанимации БД, ну он же может пройти по коду и все вернуть как надо? Оказалось может...

И тут все понеслось... Сначала мы разобрали исходники Flash и перепилили фронт, потом добили в БД то, чего не хватало, затем обработал напильником все картинки и "мультики", стараясь не уничтожить геймплей. Переработали ископаемые и элементы, все же 60 ископаемых оказались оверкилом. Поправили баланс кораблей и колоний...

Читать далее

Изучаем Triton ядро за ядром: сложение векторов

Время на прочтение8 мин
Охват и читатели7.3K

Основы программирования для GPU, оптимизация и ваше первое ядро на Triton

В эпоху моделей, оперирующих миллиардами параметров, даже небольшая оптимизация может дать значительный эффект. На обучение таких моделей как GPT4 тратится свыше $100 миллионов, и поэтому выигрыш в 1% КПД позволяет сэкономить более миллиона долларов. Есть мощный способ оптимизировать эффективность моделей машинного обучения – для этого нужно написать некоторые их компоненты прямо на GPU. Если ваш опыт похож на мой, то одно только упоминание ядер CUDA может вызвать у вас озноб — ведь печально известно, как сложно их писать и отлаживать.

Читать далее

Скрипт деплоя отчитался об успехе, а на сервере осталась старая версия: 5 ошибок в bash, которые допускают новички

Уровень сложностиСредний
Время на прочтение10 мин
Охват и читатели10K

Зелёный пайплайн ещё не означает, что деплой прошёл как надо. В Bash хватает ситуаций, где ошибка теряется, код возврата маскируется, а скрипт спокойно идёт дальше. Разберём типичные ловушки и способы сделать такие сценарии предсказуемее.

Разобрать ошибки

Самое интересное в новой версии Go — 1.27

Уровень сложностиПростой
Время на прочтение10 мин
Охват и читатели7.9K

Всем привет! Меня зовут Паша Агалецкий, я техлид команды платформы разработки Авито. В этой статье я расскажу о новой версии Go — 1.27. Я выбрал для вас самые интересные фичи — те, что влияют на код или дают новые по-настоящему полезные инструменты.

Кстати, у этого материала есть видео-версия. Вы можете ознакомиться с обновлением Go, посмотрев мой обзор на YouTube, VK Видео или RuTube

Читайте про обновление под катом

Читать далее

Статистика PostgreSQL: почему запросы выполняются медленно

Время на прочтение15 мин
Охват и читатели12K

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

Разберём, откуда PostgreSQL берёт статистику, как ANALYZE её собирает и по каким признакам понять, что проблема действительно в оценках планировщика.

Ускорить запросы

Как мы проверяем до 1 000 cайтов в час: рассказываем про ЮScan — сервис оценки рисков в сегменте e-commerce

Уровень сложностиСредний
Время на прочтение5 мин
Охват и читатели9.4K

1000 сайтов в час вместо нескольких часов на каждый — так работает ЮScan, сервис автоматизированного аудита от ЮMoney. Его основная задача — помочь банкам и платёжным организациям не допустить подключения сайтов, которые маскируют запрещённую или рискованную деятельность под легальный бизнес. Сервис автоматически проверяет ресурс и выявляет подобные случаи ещё до начала сотрудничества.

С 2020 года через ЮScan проверено более 550 тысяч заявок. За это время ЮKassa не получила штрафов за обслуживание запрещённых видов деятельности.

Кому это нужно? Если вы обрабатываете более 10 000 страниц в сутки, работаете с эквайрингом, маркетплейсами, KYC/AML-проверками или выполняете требования 152-ФЗ, ручные процессы неизбежно становятся узким местом. Меня зовут Ирина, я руковожу антифродом в ЮMoney. Расскажу, как устроен ЮScan: как обходить тысячи страниц, находить рискованный контент и превращать данные в понятный скоринг.

Читать далее

Как я ускорил работу с топом-пользователей с 36 минут до 20 секунд, используя Redis Sorted Set

Уровень сложностиСредний
Время на прочтение8 мин
Охват и читатели8.6K

Всем привет, меня зовут Михаил, я работаю Java/Kotlin разработчиком в ОТП Банке.

Все мы знаем про Redis. Часто используем его для in-memory кэша. В основном это ключ и значение. Но что, если можно пойти дальше и, как в том фильме, раскрыть все возможности Redis на 100%?

Сегодня я хочу поговорить о Sorted Set в Redis. Что это за зверь и как его использовать.

Буду показывать на примере таблицы лидеров. Это можно использовать для разных задач, но я выбрал именно эту. Будем замерять время, ресурсы при нагрузках - все, как мы любим.

Присаживайтесь, будет интересно!

Узнать, что это за покемон

Сервер стал вдвое мощнее, а хвост задержек вырос втрое

Уровень сложностиСредний
Время на прочтение10 мин
Охват и читатели6.9K

Сервер стал мощнее, а p99 внезапно вырос втрое — при свободной памяти и почти пустом CPU. В статье разбираем, как NUMA влияет на задержки, где искать удалённые обращения к памяти и когда привязка к узлу помогает, а когда только мешает.

Читать разбор

Ближайшие события

Как мы заменили 30-минутный polling на IMAP IDLE и построили маленькую распределённую систему

Уровень сложностиСредний
Время на прочтение17 мин
Охват и читатели7.9K

Когда-то наш почтовый загрузчик был обычным методом с @Scheduled. Раз в 30 минут он подключался к ящикам, искал новые вложения и запускал их обработку. Решение было простым, понятным и долгое время вполне рабочим.

Через несколько итераций вокруг того же загрузчика уже существовали IMAP IDLE listener'ы, PostgreSQL leases, heartbeat экземпляров приложения, перебалансировка почтовых ящиков между pod'ами, UID checkpoints, постоянная идемпотентность и отдельная обработка FolderClosedException. В какой-то момент мы даже попробовали держать несколько IMAP-соединений к одному ящику, но затем сознательно удалили эту часть архитектуры.

Это история не о том, как мы «заменили polling на push» одной настройкой. Она о том, как безобидный интеграционный адаптер постепенно превратился в маленькую распределённую систему. И о границе параллелизма, которую мы сначала провели не там.

Получить письмо

2–3 тысячи сборок в день: как мы превратили Kafka из компонента в инфраструктурную платформу

Время на прочтение9 мин
Охват и читатели7.2K

Apache Kafka можно бесплатно скачать, развернуть и подключить к приложениям. При небольшом проекте этого может быть достаточно: создали несколько топиков, настроили потребителей — и обмен сообщениями работает.

Но по мере роста инфраструктуры Kafka перестает быть просто брокером. От нее начинают зависеть функциональность микросервисов, интеграции, тестовые стенды, CI/CD‑процессы и рабочие системы. Вместе с нагрузкой растет и список вопросов: как обновлять кластеры, отслеживать очереди, устранять уязвимости и восстанавливать работу после отказа.

Меня зовут Илья Виссарионов, я директор департамента «Аппаратно‑системная платформа» компании «Диасофт», и в этой статье расскажу, как мы используем Kafka в DevOps‑инфраструктуре «Диасофта», какие проблемы обнаружили при эксплуатации под высокой нагрузкой и почему в итоге стали рассматривать брокер сообщений не как отдельный open‑source‑компонент, а как полноценную инфраструктурную платформу.

Читать далее

Установка XPEnology на ESXi 8 с помощью загрузчика ARC

Уровень сложностиПростой
Время на прочтение5 мин
Охват и читатели93K

Привет, Хабр! Понадобилось мне в 2026 году установить XPEnology на ESXi, но актуальных инструкций я не нашёл. Восполняем этот пробел.

Инструкция будет полезна администраторам или DevOps, начинающим своё знакомство с XPEnology.

Внимание: в статье очень много картинок.

Для чего это может потребоваться

Например, можно:

- Ознакомиться с функционалом NAS Synology перед покупкой дорогостоящего оборудования.
- Протестировать установку или настройку новых пакетов.
- Протестировать сценарии перед их реализацией на реальном железе. Например, замену, дисков меньшего объёма на больший. Или обновление DSM 7.2 на 7.3

Читать далее

Масштабирование WebRTC потоков с пулингом движков на Go

Уровень сложностиСложный
Время на прочтение5 мин
Охват и читатели6.9K

Броский заголовок есть, а теперь к сути. Сие ошибка, стандартный привет от дефолтного модуля pion/webrtc в Go. Воспроизводится просто – читаем обычные мануалы по использованию pion, выкатываешь красивый WHEP-хендлер, открываешь пару (ладно, ладно, не пару, просто красивый оборот) вкладок с плеером в браузере, и сервер начинает захлебываться. Хендшейки виснут по секундам, ICE отваливается по таймауту, а в pprof половина флеймграфа забита crypto/elliptic.p256OrdSqr и аллокациям мап внутри движка. Сюрприз? Да никакого сюрприза, если более вдумчиво почитать большинство «туториалов» по WebRTC на Go. Мне кажется, что они впринципе написаны теми, кто никогда не тестировал свою реализацию под нагрузкой даже полсотни одновременных зрителей – максимум пару-тройку потоков и успокоились на этом. Так вот, там на каждый POST-запрос с SDP-оффером создают новый webrtc.NewAPI(), регистрируют дефолтные кодеки, дергают api.NewPeerConnection() и со спокойной душой отдают ответ. На локалхосте, с парой клиентов это летает и работает без проблем. А вот на проде – превращается в катастрофу. Проблема здесь не в самом WebRTC (и уж тем более библиотеке pion`a, она очень крутая) и не в Go. Проблема в том, что глобальную и дорогую «инфраструктуру» создают на каждый(!) запросом, вместо того чтобы просто ее переиспользовать.

Читать далее

Vec и Vec — это две разные функции. И линкер это не чинит

Уровень сложностиСредний
Время на прочтение18 мин
Охват и читатели8.3K

Привет, Хабр!

У меня есть для вас очень простой способ испортить себе вечер. Поставьте cargo-llvm-lines, запустите на своём проекте и посмотрите не на первую колонку, а на вторую, которая называется Copies. Сверху почти наверняка будет core::ptr::drop_in_place, дальше что-нибудь из Vec, потом хвост от serde. И напротив каждой строчки будет стоять не единица.

Обычная реакция в этот момент: ну да, дженерики, зато быстро, а одинаковые копии потом схлопнет LLVM. Часть действительно схлопнет. Только не тем механизмом, о котором вы подумали, и точно не тем, который вы включили в Cargo.toml.

В статье узнаем откуда берутся копии, почему Vec<u32> и Vec<i32> в бинарнике сливаются в одну функцию, а Vec<u32> и Vec<u64> не сольются ни при каких настройках, что от этого видно в именах символов, как с той же проблемой воюет сам std и куда делась полиморфизация, которую пять лет ждали как лекарство.

Читать далее

Внутреннее устройство Bitcoin

Уровень сложностиСредний
Время на прочтение7 мин
Охват и читатели9.5K

В этой статье я постараюсь объяснить, как работает биткоин. Без аналогий с добычей золота и прочих глупостей.

Начать стоит с того, что он вообще из себя представляет. Биткоин, это одноранговая (P2P) сеть которая формирует механизм глобального консенсуса, который позволяет всем узлам сети договориться об общем состоянии леджера и дает возможность локально проверить весь этот леджер, не доверяя никому. Это система где есть только пользователи и нет администраторов. Это permissionless система, то есть вам не нужно ничье одобрение чтобы в ней участвовать. Используется эта система для формирования глобальной системы денег. Леджер хранит всю историю транзакций за все время, формируя цепочку блоков транзакций - блокчейн.

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

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

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

В его составные части входит:

Читать далее

BiHA: встроенная отказоустойчивость Postgres Pro Enterprise и Standard

Уровень сложностиПростой
Время на прочтение9 мин
Охват и читатели9.4K

Построение HA-кластера в PostgreSQL традиционно требует внешнего стека: Patroni, распределенного хранилища конфигураций и набора вспомогательных утилит. В СУБД Postgres Pro Standard и Enterprise отказоустойчивость реализована на уровне ядра: механизм BiHA берет на себя консенсус Raft, защиту от split-brain и перестроение топологии.

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

Читать далее
1
23 ...