Обновить
72.57

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

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

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

Оптический бюджет в ВОЛС. Как не оступиться в эпоху 100G+ и плотных ЦОД?

Время на прочтение6 мин
Количество просмотров1.3K

Оптический бюджет в ВОЛС: Невидимая грань между работоспособностью и отказом. Как не оступиться в эпоху 100G+ и плотных ЦОД?

Представьте: вы спроектировали идеальную магистраль, выбрали "качественные" компоненты, смонтировали... И линк не поднимается. Или работает, но с ошибками. Или стабилен сегодня, но "падает" при нагреве летом. Часто корень зла кроется в нарушении оптического бюджета мощности (Optical Power Budget - OPB). Это не абстрактная цифра из даташита – это фундаментальный закон сохранения энергии в мире оптики. Игнорируете его – гарантируете себе головную боль. Сегодня, с ростом скоростей (100G, 400G, 800G) и плотности в ЦОД, понимание и точный расчет OPB критичны как никогда. Давайте разберемся, что это, из чего складывается, где поджидают ловушки и как избежать фатальных ошибок.

1. Суть Оптического Бюджета: Проще, Чем Кажется (На Словах)

По сути, OPB – это разница между мощностью, которую передатчик (Tx) излучает в волокно, и минимальной мощностью, необходимой приемнику (Rx) для корректной работы (чувствительностью) с учетом требуемого запаса (System Margin).

Упрощенная формула:
OPB = P_Tx_min - P_Rx_min - System_Margin

Где:

Читать далее

Function splitting и чистый код

Уровень сложностиСложный
Время на прочтение16 мин
Количество просмотров3.4K

Сложная и тяжелая статья с непропорционально простым выводом. Вспомним фон Неймана, затронем процессорный кеш, поговорим про регистры и компиляторы. Тем, кому не хочется погружаться в детали, достаточно прочитать только Введение и Выводы.

Читать далее

Что будет, если заинлайнить всё

Время на прочтение25 мин
Количество просмотров13K

Усаживайтесь поудобнее, ребята! Сегодня мы с вами разберём следующий увлекательный вопрос: что будет, если заинлайнить вообще всё?

Если вы пока не знакомы с техникой встраивания (inlining) то примите к сведению, что в сообществе специалистов по разработке компиляторов многие, в том числе очень авторитетные фигуры (например, Чендлер Каррут) считают этот приём наиважнейшим при оптимизации компиляторов. Подробнее о том, как устроено встраивание, рассказано здесь — мы беззастенчиво хвалимся той презентацией, с которой выступили перед участниками конференции LLVM Developers' Meeting по межпроцедурной оптимизации. Я рассказывал о встраивании и очень рекомендую вам посмотреть хотя бы первые 6 минут. В этом видео я рассказываю, почему встраивание — очень простое преобразование, а вот тут вашему вниманию предлагается реализация встраивания, предложенная великим Крисом Латтнером уже около 20 лет назад — в ней всего около 200 строк кода. К сожалению, сегодня даже само преобразование пропорционально выросло: в качестве примера взгляните хотя бы на InlineFunction.cpp.

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

Читать далее

Коротко объясняем, что такое поток, буфер, дуплекс и канал

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

Поток — это последовательность элементов данных, предоставляемых за некоторое время. Концепция потока (stream) позволяет обрабатывать или передавать данные поэлементно, а не как одно целое. Потоки особенно полезны в сценариях, когда приходится работать с большими множествами данных, непрерывными данными или данными реального времени.

Читать далее

Шардирование баз данных: проблемы, альтернативы, практические рекомендации

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

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

Читать далее

Шпаргалка по установке драйверов NVIDIA на ML сервер

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

Данный материал предназначен для быстрой и последовательной установки драйверов NVIDIA, в том числе для видеокарт 50xx серии, а также настройки NVIDIA Container Toolkit. Эта инструкция актуальна для Linux-систем на базе Ubuntu и других Debian-совместимых дистрибутивов.

Читать далее

Какие есть альтернативы Prometheus, если для метрик его стало недостаточно

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

Prometheus прекрасно подходит для краткосрочного мониторинга, но у этого решения есть свои ограничения по масштабу, и если вы столкнулись с высоким потреблением памяти/CPU, снижением скорости запросов или вам требуются уникальные лейблы вида user ID, то стоит подумать над внедрением альтернатив. На наш взгляд следующими после Prometheus в линейке стоят Thanos, Cortex, Mimir или VictoriaMetrics. Объективное, насколько это возможно, сравнение характеристик этих решений мы и проведем ниже.


СОДЕРЖАНИЕ


0. В каких случаях нужно задуматься о замене Prometheus
1. Обзор решений для долгосрочного хранения метрик
2. Сравнение решений: Thanos, Cortex, Mimir и VictoriaMetrics
3. Как выбрать подходящее решение
4. Миграция с Prometheus на долгосрочное хранилище
5. Сохранение алертов и дашбордов
6. Как избежать потери данных при миграции
7. Лучшие практики эксплуатации долгосрочного хранилища метрик
8. Высокая доступность и избыточность
9. Мониторинг состояния хранилища метрик
10. Обработка долгосрочных запросов и типовые ошибки

11. Обслуживание и обновления (Maintenance & Upgrades)
12. Итого. Как жить с продакшн-наблюдением

Читать дальше →

Паттерны кеширования: проблемы, решения, практические рекомендации

Уровень сложностиСредний
Время на прочтение14 мин
Количество просмотров4.7K

Приложения тормозят. Пользователи уходят. Бизнес недоволен. Знакомая картина? Часто корень зла – медленный доступ к данным. Кеширование может стать спасательным кругом. Но это не серебряная пуля. Неправильно настроенный кеш – источник новых проблем, иногда похуже старых.

Читать далее

Правильный порядок колонок в B-tree индексах PostgreSQL или правило ESR

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

Когда в проекте используется составной B-tree индекс, важно не просто "создать индекс", а сделать это правильно — иначе запросы могут не только не ускориться, но и начать работать медленнее. Возникает логичный вопрос: как выбрать порядок колонок, чтобы индекс действительно работал эффективно? Брутфорсом? По интуиции? По селективности?

В этой статье я расскажу, как подходить к построению составных индексов в PostgreSQL, на что реально влияет порядок колонок. Также разберём простое правило ESR, которое помогает упростить выбор и получать стабильный прирост производительности на всех стендах.

Читать далее

Личный VPN сервер: настрой VLESS за два клика — autoXRAY

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

Сейчас в сети много инструкций по установке GUI-панелей, таких как Marzban, 3x-ui или новая RemnaWave. Однако, все они избыточны для домашнего использования, так как предназначены для крупных проектов и отличаются высокой сложностью настройки.

Мануал, который необходимо пройти до получения первого рабочего конфига, занимает более 10 страниц. Кроме того, подходящий конфиг для Xray нужно ещё поискать и правильно настроить — с этим отлично справляется Bash-скрипт autoXRAY.

Без GUI и базы данных Xray потребляет меньше ресурсов сервера и отлично подходит для запуска на слабых VPS-конфигурациях!

При каждом запуске autoXRAY генерирует новые UUID, ключи и пароли для защиты пользователей, а также выбирает случайные SNI из списка для маскировки.

Читать далее

Два подхода к интерпретации видимости в Rust

Время на прочтение12 мин
Количество просмотров1.9K

В прошлом году, просматривая пул-реквесты по поводу компилятора Rust, я обратил внимание на #126013. В нём к некоторым пакетам компилятора добавлялась проверка unreachable_pub. Естественно, меня это заинтересовало, так как на тот момент я о такой проверке не знал. Но, разобравшись с её описанием, я тем более удивился, так как эта проверка показалась мне абсолютным нонсенсом! Поговорив об этом с авторами пул-реквеста, я осознал, что, пожалуй, достаточно странно представляю себе, как устроена видимость в Rust. Как минимум, я воспринимал её не «так, как она была задумана».

Эта тема показалась мне достаточно интересной, чтобы раскрыть её в блоге. В этой статье я коротко объясню, как именно работает видимость в Rust, а потом опишу два достаточно разных способа её использовать. Если вы знаете, как в Rust устроена видимость, можете смело пропускать введение и переходить к главной теме. Оговорюсь, что в этом посте я просто вывалил различные мысли на данную тему, скопившиеся у меня, так что не ожидайте найти здесь каких-либо супер-откровений :).

Читать далее

Kubernetes в продакшене: основные понятия и вопросы на собеседовании

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

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

Читать далее

MySQL репликация: проблемы, решения, практические рекомендации

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

Вопрос "какая репликация MySQL лучшая?" звучит часто. Ответ, как водится в сложных системах, – "зависит от ситуации". Нет универсального решения. Выбор оптимального метода репликации всегда компромисс. Приходится искать золотую середину между тем, насколько данные должны быть одинаковыми везде, скоростью работы, бесперебойностью и тем, насколько сложно все это настроить. Посмотрим внимательнее на главные способы. Это поможет сделать осознанный выбор.

Читать далее

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

Балансировка нагрузки серверов: уходим от Round Robin

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

Финансы, ритейл, соцсети, облака – везде свои тараканы, но требования схожи: чтобы летало и не падало. Балансировка нагрузки – это как фундамент для небоскреба. Криво зальешь – все рухнет. И вот тут стандартный Round Robin, при всей его простоте, часто оказывается тем самым кривым фундаментом.

Читать далее

Минпромторг запрещает параллельный импорт HP и Fujitsu: что это значит и как с этим жить

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

Техника HP и Fujitsu в России – все. По крайней мере, такое мнение могло сложиться о новой инициативе Минпромторга, который предложил исключить ноутбуки и серверы этих производителей из перечня товаров для параллельного импорта. Несмотря на то, что мера выглядит довольно суровой, как говорится, не все так однозначно. Поэтому давайте разберемся, что именно меняется и как это отразится на работе российских организаций.

Читать далее

ACID, BASE, CAP: Фундамент архитектуры распределенных систем

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

Современная разработка ПО – это почти всегда про распределенные системы. Микросервисы, облака, глобальный охват – все это стало нормой. Но за красивыми диаграммами и модными словами скрывается фундаментальная сложность. Как заставить кучу разрозненных компонентов работать вместе надежно? Как гарантировать, что данные, размазанные по сети, останутся корректными и доступными? Эта головная боль знакома любому, кто проектировал системы сложнее калькулятора, будь то в требовательном финтехе, динамичном e-commerce или где-либо еще.

И вот тут на помощь (или, скорее, для обозначения поля боя) приходят три понятия: ACID, BASE и теорема CAP. Может показаться, что это сухая теория, но игнорировать их – все равно что выходить в море без компаса и карты. Эти концепции описывают фундаментальные компромиссы, с которыми приходится иметь дело каждому архитектору. Понимание их – не гарантия успеха, но его необходимое условие. Давайте погрузимся в их суть и посмотрим, как они влияют на реальные архитектурные решения.

Читать далее

Микросервисы и данные: Как Saga-паттерн спасает от хаоса транзакций

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

Переход на микросервисы – это часто как переезд из тесной, но понятной коммуналки (монолита) в огромный город с кучей отдельных квартир. Свободы больше, масштабироваться проще, команды независимы – красота! Но тут же вылезает проблема, о которую разбиваются многие корабли: как поддерживать порядок и целостность данных, когда они размазаны по десяткам этих "квартир"-сервисов со своими собственными базами данных?

Старый добрый ACID, который спасал нас в монолитах с одной большой базой, здесь уже не помощник. Пытаться натянуть на микросервисы классические распределенные транзакции с двухфазным коммитом (2PC) – это почти всегда путь к страданиям. Представьте: один сервис захватывает блокировку, ждет подтверждения от другого, тот ждет третьего... Чуть что не так – вся цепочка висит, пользователи ждут, система тормозит, доступность падает. Звучит знакомо? Именно поэтому умные люди придумали альтернативу – паттерн, известный как Saga.

Читать далее

Как специально написать чрезвычайно медленный код

Время на прочтение7 мин
Количество просмотров16K

Раз в несколько лет я устраиваю в нашей исследовательской группе челлендж «Напиши медленный код». Цель – написать код с минимально работоспособным количеством инструкций на цикл (IPC) с условием, чтобы этот код выполнялся на заранее подобранном сервере с архитектурой x86.

На первый взгляд, это абсурд В сущности, так и есть. Однако есть в этой безумной задаче и некоторая методическая ценность. Инженеры, проектирующие процессоры, прилагают все усилия ради достижения наивысшего возможного IPC… даже для очень неэффективного кода. Так и задумано, что писать код с очень высоким показателем IPC непросто. Следовательно, челлендж «Напиши медленный код» оказывается заковыристым упражнением, вынуждающим задумываться, как именно работает процессор, и как применить себе на пользу его острые углы.

Читать далее

Для защиты своего сервера я использую zip-бомбы

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

Основной объём трафика в вебе возникает из-за ботов. По большей части, эти боты используются для обнаружения нового контента. Это читалки RSS-фидов, поисковые движки, выполняющие краулинг вашего контента, а сегодня и боты ИИ, собирающие контент, чтобы скармливать его LLM. Но есть и зловредные боты. Их создают спамеры, скрейперы контента и хакеры. На моём прежнем месте работы бот обнаружил уязвимость Wordpress и встроил в наш сервер зловредный скрипт, а затем превратил машину в ботнет, используемый для DDOS. Один из моих первых веб-сайтов был полностью выдавлен из поиска Google из-за ботов, генерирующих спам. Мне нужно было найти способ защиты от этих ботов, поэтому я начал пользоваться zip-бомбами.

Читать далее

Vouch Proxy для OAuth2 при авторизации пользователей в нагруженных системах

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

Vouch Proxy (VP) представляет собой мощный инструмент для обеспечения безопасности и удобства использования веб-приложений, особенно в условиях высокой нагрузки. VP позволяет использовать различные Identity Provider (IdP) для аутентификации пользователей и предоставления им доступа к защищенным ресурсам. В этой статье мы рассмотрим, как Vouch Proxy может быть использован для реализации OAuth2 в нагруженных системах.

Читать далее