Обновить
65.87

Серверная оптимизация *

Разгружаем сервер

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

PCIe умер, да здравствует CXL [часть 2]: сервер на 5+ лет с DDR4

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

Привет постоянным и не очень читателям :)

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

Ремарка! Я не против конкретных цифр и конфигураций — я против попытки выдать их за универсальный рецепт. Так что этот подход оставим для SEO-статей.

В этом же лонгриде я затрону ошибки мышления при подборе серверов на 5+ лет и сдвиги, которые произошли за последние годы (и особенно хочу поговорить про огромное влияние CXL). Я плотно работаю в этой индустрии больше 6 лет и прошел подобный цикл на практике, да и админы-старожилы рассказали много интересного о том, что было раньше.

Присаживаемся, ложимся или в какой там позе вы читаете — и начинаем.

Дропдаун

Новости

SSR vs CSR vs гибрид. Сравниваем подходы к рендерингу страниц Django-приложения

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

Решил один мой коллега (не разработчик) заняться пет-проектом: создать платформу с элементами соцсети и встроенным картографическим плагином. И вот приходит этот коллега ко мне с вопросом по части фронтенда: «А как бы мне отрендерить страницы: на сервере или на клиенте?», описывая то решение, которое он уже сделал и которое в целом работает.

Что ж. Меня зовут Андрей, я фронтенд-разработчик в Selectel. В этой статье я расскажу и покажу, какие виды рендеринга веб-страниц существуют и в каком случае лучше использовать тот или иной подход. Разберем все это дело на примерах. Сперва пройдемся по теоретическим основам, а затем — по практике. Если так сложилось, что и вас жизнь привела к подобным фронтендерным запросам, но должного опыта еще нет, добро пожаловать под кат.

Читать далее

Работа над ошибками. Как я ускорял Next.js приложение. React Compiler, Redis и многослойное кеширование

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

Как заставить летать список из 5000+ товаров на странице? Нативный рендер кладёт вкладку, а все базовые оптимизации уже сделаны.

Разбираем послойно: внедрение React Compiler (React 19), виртуализация через TanStack, гибридное кэширование (Redis + unstable_cache) и архитектура работы с анонимными пользователями без лишних запросов к БД. Работа над ошибками, которая ускорила проект в разы.

Как я ускорял Next.js

Ollama 0.15.5 новый релиз

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

Вчера Ollama стала устанавливаться как версия 0.15.5

Теперь доступны новые модедели, например qwen3-coder-next.

Данная модель очень хорошо пишет код, но есть одна проблема. Для ollama есть только модели с квантизацией q4_K_M размер модели 52Гб., q8_0 размер 85Гб или платный запуск из облака. Сама модель обучена на 80 миллиардах параметров, большую часть которых составил код.

Да, в минимальной конфигурации, для локального запуска этой модели необходимо не меньше 80 Гб. видеопамяти если нужна большая скорость. Конечно можно запустить эту модель и на CPU, имея от 128 Гб. DDR5 RAM, работать будет, но очень медленно.

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

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

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

Адрес сервера http://demonryb.ru:8080/

Доступ к моделям возможен только после того как я подтвежу вашу регистацию.

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

Читать далее

Почему сервер тормозит при свободных CPU и RAM

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

Если мониторинг показывает, что ЦП большую часть времени в простое, а оперативка не выбивается из нормальных значений, значит, узкие места нужно искать в других подсистемах. В статье расскажу про основные причины заторможенности Linux-сервера и как проверить, есть ли они у вас.

Читать

Когда планировщик начал смотреть на звёзды: как scx_horoscope показал будущее гибких планировщиков ядра Linux

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

В конце 2024 года на просторах GitHub появился проект, который заставил даже самых серьёзных системных программистов улыбнуться: scx_horoscope — планировщик задач для ядра Linux, корректирующий поведение CPU в зависимости от положения планет, фаз Луны и так называемой ретроградности. Автор, Lucas Zampieri, с иронией обыграл давний системный фольклор о зависимости работы систем «от фазы Луны», превратив мем в рабочий код, который действительно загружается в ядро и участвует в распределении процессорного времени.

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

Интересно?

Решаем архитектурную проблему nginx с HTTP/3: опыт Angie и магия eBPF

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

Для пользователя может показаться, что переход с HTTP/2 на HTTP/3 — это просто замена TCP на UDP в конфиге. Но для серверного ПО с многопроцессной архитектурой этот шаг превращается в настоящую «головную боль». Классическая схема с accept(), на которой годами строилась работа с TCP‑соединениями, в мире QUIC попросту не существует. Пакеты летят в UDP‑порт, и ядро ОС больше не знает, какому именно рабочему процессу их отдать.

В оригинальном nginx это привело к тому, что поддержка HTTP/3 уже долгое время остается «экспериментальной» и ограниченной: она страдает от проблем с обрывами сессий и деградации сервиса при обновлении конфигурации. Для многих это стало стоп‑фактором для внедрения протокола в реальный продакшен.

В этой статье мы расскажем, как в Angie 1.11 нам удалось устранить эти фундаментальные недостатки. Мы не просто добавили поддержку протокола, а пересмотрели механику взаимодействия с ядром. Путь от простых хешей до создания полноценного аналога accept() для QUIC с помощью BPF‑программ позволил нам заявить: реализация HTTP/3 в Angie закончена, лишена «детских болезней» nginx и полностью готова к эксплуатации в высоконагруженных средах.

Добро пожаловать под капот современного транспорта данных.

Читать далее

Поддержка выделенных серверов в Managed Kubernetes и другие обновления Selectel в декабре

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

Привет, Хабр! Под конец 2025 года мы в Selectel запустили отказоустойчивый изолированный DNS-сервис и новую конфигурацию для работы с большими объемами данных, представили AI-консультанта для SelectOS и реализовали много других полезных обновлений. Подробности под катом!

Читать далее

Как реализовать 5 уровней оптимизации и не сойти с ума

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

В этой статье я подробно опишу 5 стадий принятия неизбежного  уровней оптимизации. В качестве примера рассмотрим, как я пытался оптимизировать функцию для инструмента командной строки, который я сам и написал  I (monorepo-hash).

Примечание

Я не настаиваю на том, что изложенное здесь — 5 священных заповедей инженерии производительноcти, а также не утверждаю, что приведённые здесь приёмы точно соответствуют каким-либо «карьерным уровням». Их можно сравнить просто с вешками на пути.

Это всего лишь тот путь, который проделал я сам. Есть в нём доля эго, пару раз я свернул не туда, бывали и случаи «я знаю, как тут срезать дорогу», за которыми сразу следовало раскаяние.

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

Кликбейтный заголовок? Что ж, даже, если так — вы же открыли статью, значит, он сработал :)

Читать далее

PostgreSQL и 1С: как построить систему поиска «тихих убийц» производительности

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

Стандартный мониторинг часто пропускает «тихих убийц» — запросы, которые по отдельности кажутся нормальными, но в сумме создают аномальную нагрузку на СУБД. В итоге система живет в хрупкой идиллии до первого аврала.

В статье — описание универсального способа контроля качества кода и нагрузки на базу без выделенного DBA. Пошагово разберем поиск неоптимальных запросов с помощью pgBadger на живом кейсе.

Читать далее

Оптимизация кода. Что быстрее: циклы vs стрелочные функции. Простая задача с собеседования

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

Оптимизация кода. Что быстрее: циклы vs стрелочные функции. Простая задача с собеседования. Разбор простых итераций с примерами кода

Читать далее

Кейс: как использовать frontend-фичи и UX для оптимизации трафика на примере Дзена

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

Кейс: как использовать frontend-фичи и UX для оптимизации сетевого трафика запросов на примере Дзена и других сервисов

Читать далее

std::move ничего никуда не двигает: подробный рассказ о категориях значений в C++

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

Проблема: когда из-за «оптимизации» код замедляется

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

Читать далее

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

Black-White Array: новая структура данных с O(log N) аллокаций

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

Black-White Array (BWA) — это упорядоченная структура данных с амортизированным временем операций вставки/поиска/удаления O(\log N) и O(\log N) используемых участков памяти. Преимущества:

• Амортизированное время вставки/удаления/поиска сравнимое с реализацией BTree от Google;
• Низкое количество аллокаций памяти при операциях вставки O(\log N) - меньше давления на сборщик мусора, ниже фрагментация памяти;
• Массивы под капотом: данные лежат рядом, что улучшает кэшируемость процессором и скорость обхода/доступа к данным;
• Позволяет хранить элементы с одинаковыми ключами - не нужно использовать дополнительные структуры для группировки таких элементов;
• Низкий оверхед на хранение служебной информации - экономия памяти по сравнению с другими структурами данных;
• Удобен для вставки батчами;
• Простая сериализация и десериализация;

Подробности

Дефрагментация HDD ускоряет скорость работы, но на сколько? Расчет скорости HDD в зависимости от фрагментации

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

Что такое фрагментация?

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

Введение процедуры дефрагментации способно кардинально изменить ситуацию. Суть дефрагментации заключается в объединении отдельных фрагментов файлов в единую область на диске, сокращая путь движения головок и уменьшая среднее время доступа к данным. Этот процесс оказывает непосредственное влияние на повышение общей производительности системы, снижение нагрузки на аппаратуру и продление срока службы HDD.Далее мы подробно изучим механизм воздействия фрагментации и дефрагментации на показатели скорости работы жесткого диска, используя конкретные расчеты и наглядные примеры.

Читать далее

Параметры Python, которые должен знать питонист

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

Есть числа, которые полезно знать программистам на Python. Насколько быстро добавляется элемент в список? Как насчет открытия файла? Это занимает меньше миллисекунды? Если ваш алгоритм зависит от производительности, какую структуру данных вы должны использовать? Сколько памяти занимает число с плавающей запятой, один символ или пустая строка? Насколько быстр FastAPI по сравнению с Django?

Это перевод недавней работы Michael Kennedy с подробными пояснениями для начинающих питонистов, которых нет у автора.

Читать далее

Как сократить расходы на VPS и не сломать прод

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

Для ощущения надёжности и безопасности VPS часто берут с запасом. Но со временем процессор начинает простаивать, память заполняется кэшем, диск пишет логи и бэкапы вместо рабочей нагрузки, а тариф остаётся прежним. На фоне грустных новостей об НДС и кризисе есть хорошая — некоторые расходы на инфраструктуру можно сократить. О том, как это сделать, мы расскажем под катом. 

Читать далее

Нейропоисковик на 17 миллионов картинок: OpenCLIP, Qdrant и ZeroTier вместо облаков

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

Как сделать свой аналог Pinterest, если у вас нет бюджета корпорации, но есть 4 ТБ картинок (17 миллионов штук) и желание искать по ним не просто по тегам, а по визуальному стилю?

В статье — опыт построения распределенной системы поиска из подручных средств. Разбираем архитектуру: — Гибридное хранение: Backblaze B2 (холодное) + Домашний сервер (вычисления). — Сеть: Как ZeroTier объединил разрозненные ноды в одну Mesh-сеть без белых IP. — Векторный поиск: Как уместить 17 миллионов векторов OpenCLIP ViT-H/14 в 32 ГБ RAM с помощью Qdrant и квантизации. — Оптимизация: Почему поиск работает за 5 мс, а загрузка метаданных тормозила до 3 секунд, и как PostgreSQL спас ситуацию.

Полный разбор ETL-пайплайна и экономики домашнего HighLoad-проекта.

Читать далее

Инженерия UX и производительности: от ядра к периферии

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

Очень краткий рассказ про семь проектов, построенных одним инженером на унаследованной платформе.

Легаси. Много дополнительных модулей. Очень медленная загрузка страниц. Визуально сайт выглядит морально устаревшим. Мобильного приложения нет. Пользователи есть, пользуются, но страдают (с большими экранами очень страдают).

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

Читать далее

Утечка, которой не было: как Next.js раздувает RAM в Kubernetes

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

Привет, Хабр! Меня зовут Вадим Королёв. Я руководитель команды разработки в X5 Tech. Очень люблю Next.js и решать проблемы, которые он приносит. С ним всегда происходит что-то интересное. Расскажу о причине утечки памяти в Node.js, которая оказалась глубже, чем можно было подумать.

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

В этот момент я занимался архитектурой и оптимизацией Node.js в музыкальном стриминге. Открыл графики и увидел явный рост памяти, который уходил в пик и приводил к перезапуску подов. Так началась «классическая предновогодняя история». Next.js в Kubernetes внезапно начал есть память так, будто у него внутри чёрная дыра.

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