lenec ru

← все теги

#performance

50 постов

strace для отладки: находим баги в проде за 5 минут

Выбор логгера в Node.js — решение, которое аукнется через полгода, когда сервис начнёт обрабатывать тысячи запросов в секунду. В 2026 году два главных кандидата — Pino и Winston. Оба поддерживают…

0 13K
sysmonk

Connection pooling: pgbouncer vs встроенный пул в приложении

# Grafana Loki: централизованные логи без Elasticsearch Если вы устали от тяжеловесного ELK stack, который съедает гигабайты RAM и требует постоянного внимания к шардам — пора познакомиться с Grafana…

0 14K
Dmitry Volkov

Postgres FATAL: too many connections — как лечить

Postgres падает не от количества SQL-запросов и не от размера базы. Чаще всего у людей в проде он начинает выдавать вот это:FATAL: sorry, too many clients alreadyСообщение прямое: достигнут лимит…

310 11K
Зоя Хомякова

nginx tuning: оптимизация для высоких нагрузок на практике

Дефолтный nginx обрабатывает тысячи RPS. Но когда трафик растёт, дефолты мешают: соединения к upstream пересоздаются на каждый запрос, буферы маленькие, сжатие отключено. Разберём параметры, которые…

0 13K
sysmonk

Connection pooling в Node.js: postgres, redis, HTTP keep-alive

Когда ваш Node.js-сервис начинает тормозить в проде — утечка памяти, внезапные CPU-спайки, медленные ответы — первый вопрос: где именно проблема? Логи молчат, метрики показывают только симптомы.…

0 13K
Sergey Morozov

Redis vs KeyDB vs Dragonfly: что брать под кэш и очереди

Я в этом году катал у себя на VPS три варианта in-memory key-value стора: Redis, KeyDB и Dragonfly. Цель была не выбрать «один на все случаи», а понять, где какой работает лучше: под кэш, под…

118 10K
Никита Тетеревин

Кеширование HTTP-ответов в Node.js: ETag, Cache-Control, stale-while-revalidate

Когда ваш Node.js-сервис начинает тормозить в проде — утечка памяти, внезапные CPU-спайки, медленные ответы — первый вопрос: где именно проблема? Логи молчат, метрики показывают только симптомы.…

0 11K
Константин Веб-Разработчиков

eBPF для разработчика: наблюдаемость Linux без overhead

В 2026 году спор «Zustand или Redux Toolkit» — это уже не холивар фанатов, а практический выбор архитектуры. Оба инструмента зрелые, оба поддерживают TypeScript из коробки. Но подходят они для разных…

0 14K
sysmonk

GraphQL vs REST: производительность, кэширование и когда что выбирать

В высоконагруженных микросервисах rate limiting — это не просто защита от DDoS, а инструмент управления ресурсами. Он предотвращает перегрузку сервисов, защищает от злоупотреблений API и обеспечивает…

0 16K
Ольга Фронтендова

IL2CPP vs Mono в Unity: что выбрать и где какие подводные камни

Каждый раз перед релизом игры встаёт банальный вопрос: оставлять Mono или переключать на IL2CPP. На мобиле выбора нет (Apple требует IL2CPP), на ПК выбор есть, и многие выбирают по привычке. Я…

81 14K
Виктор Голубев

Как ускорить Core Web Vitals на Astro

Astro изначально хорош в производительности: статические страницы, минимум JS, серверный рендер по умолчанию. Но «хорошо» и «отлично» — разные вещи. Я недавно делал аудит контентного сайта на Astro…

326 18K
Антон Зверев

Профилирование Unity-игры на мобилке: Profiler workflow и реальные узкие места

Чтобы оптимизировать Unity-игру на мобилке, не нужно угадывать. Нужен Profiler и понимание, что в нём смотреть. Я помогал доводить пять-шесть мобильных проектов до приемлемого фреймрейта, и почти…

461 11K
Виктор Голубев

cgroups v2: управление ресурсами контейнеров в современном Linux

Текстовые логи вида INFO: User logged in работают, пока сервис маленький. Но когда у вас 50 инстансов и тысячи запросов в секунду — grep по тексту превращается в пытку. structlog решает проблему:…

0 16K
sysmonk

Индексы Postgres на пальцах: B-tree, GIN, BRIN и когда что брать

Индексы в Postgres — это та тема, по которой каждые полгода кто-то на работе подходит и спрашивает: «вот тут тормозит, какой индекс воткнуть?». Я решила собрать свой ответ в одном месте, чтобы можно…

242 19K
Вероника Соловьёва

Kubernetes resource limits: правильно выставляем requests и limits для подов

Redis из коробки — single-threaded процесс без встроенной отказоустойчивости. Если мастер упал, клиенты получают ошибки до ручного переключения. Sentinel и Cluster решают эту проблему, но по-разному:…

0 10K
devnotes_ru

Astro framework: строим контентный сайт с островами интерактивности

Если вы строите контентный сайт — блог, документацию, лендинг — и устали от того, что Next.js тащит на клиент сотни килобайт JavaScript ради одной кнопки, пора посмотреть на Astro. Этот фреймворк по…

0 15K
Светлана Морозова

Svelte vs React в 2026: сравнение подходов, производительности и экосистем

В 2024 году команда Astral (создатели ruff) выпустила uv — менеджер пакетов Python, написанный на Rust. За полтора года он дорос до стабильной версии и претендует на замену pip, pip-tools, virtualenv…

0 18K
Светлана Морозова

Unity DOTS на практике: когда ECS оправдан, а когда оверкилл

Я живу с DOTS уже четыре проекта. Один — мобильный F2P, два пет-проекта на ПК, один прототип сетевой стратегии. И в трёх случаях из четырёх через полгода я думал «зря я это начал». В одном случае —…

209 16K
Виктор Голубев

Rate limiting в Node без Redis: рабочие подходы и грабли

В половине случаев, когда мне нужен rate limiting, ставить Redis ради этого не хочется. Один сервис, маленькая БД, пара ручек, которые надо защитить от ddos и от слишком ретивых клиентов API.…

145 18K
Никита Тетеревин

Burst-компилятор в Unity: что он умеет и как им пользоваться правильно

Burst я первый раз попробовал лет шесть назад, и тогда подумал: «прикольная штука, но возни много, и не всегда понятно, ускорилось ли». Сейчас Burst — один из главных инструментов в моём ящике, и я…

73 15K
Виктор Голубев

Виртуализация длинных списков в React: TanStack Virtual без боли

Нам прилетел тикет — оптимизировать листинг на 5К карточек товаров. Без виртуализации страница на iPhone 11 умирала в момент скролла, FPS падал до 5–7. С виртуализацией стала держаться на 58–60.…

367 15K
Юлия Скворцова

Fastify vs Express в 2026: производительность, плагины и миграция

Когда Redis упирается в лимит памяти, он не падает молча — он начинает вытеснять ключи по заданной стратегии. Выбор правильной eviction policy определяет, потеряете ли вы критичные данные или…

0 12K
devnotes_ru

Оптимизация PostgreSQL запросов: индексы, EXPLAIN ANALYZE и query planning

В высоконагруженных микросервисах rate limiting — это не просто защита от DDoS, а инструмент управления ресурсами. Он предотвращает перегрузку сервисов, защищает от злоупотреблений API и обеспечивает…

0 17K
Дмитрий Кодеров

PostgreSQL EXPLAIN ANALYZE: читаем план запроса как профи

# Grafana Loki: централизованные логи без Elasticsearch Если вы устали от тяжеловесного ELK stack, который съедает гигабайты RAM и требует постоянного внимания к шардам — пора познакомиться с Grafana…

0 46
Сергей Данилов

Node.js event loop: как работает и почему блокируется — разбор с примерами

Event loop — сердце Node.js. Один поток обрабатывает тысячи соединений, пока каждый callback быстрый. Но стоит одному занять 200 мс — и весь сервер замирает. Разберём фазы цикла, разницу между micro-…

0 19K
Николай Ломов

EXPLAIN ANALYZE в Postgres: как читать план запроса

EXPLAIN ANALYZE для меня — главный инструмент, чтобы превратить «запрос медленный» в «вот тут планнер не знает про индекс, добавим». Расскажу свой подход: что я смотрю в плане в первую очередь, какие…

310 10K
Вероника Соловьёва

SolidJS: реактивность без Virtual DOM — практическое сравнение с React

В 2026 году axios всё ещё стоит в dependencies у миллионов проектов, хотя Node.js давно имеет встроенный HTTP-клиент. Начиная с Node 21 fetch() доступен без флагов, а под капотом работает undici —…

0 10K
Светлана Морозова

Профилирование Go-сервиса с pprof: пошагово на реальном примере

Раз в полгода у меня случается ситуация, когда сервис на Go начинает жрать CPU или память сильнее обычного, и непонятно, откуда. Каждый раз спасает net/http/pprof. Но из раза в раз вижу коллег,…

209 18K
Игорь Лебедев

Linux io_uring: асинхронный I/O нового поколения — как работает и когда применять

Linux долго жил с двумя подходами к асинхронному I/O: epoll для сокетов и POSIX aio для файлов. Оба имеют фундаментальные ограничения. io_uring, появившийся в ядре 5.1 (2019), решает их через единый…

0 14K
Светлана Морозова

PostgreSQL partitioning: секционирование таблиц для больших данных

Когда таблица перерастает 100 миллионов строк, привычные операции начинают деградировать. VACUUM работает часами, индексы раздуваются до десятков гигабайт, а удаление старых данных превращается в…

0 12K
Игорь Беляев

Python asyncio + aiohttp: пишем высоконагруженный HTTP-клиент правильно

Infrastructure as Code давно стал стандартом, но выбор инструмента по-прежнему вызывает споры. Terraform с его HCL — проверенный лидер. Pulumi предлагает писать инфраструктуру на TypeScript, Python…

0 18K
Мария Соколова

Linux perf: профилирование CPU и поиск bottleneck в продакшене

Astro — фреймворк, который отправляет браузеру чистый HTML и ноль JavaScript по умолчанию. Интерактивные компоненты подключаются точечно — как «острова» в море статики. Это делает Astro идеальным для…

0 15K
sysmonk

Pino vs Winston в 2026: бенчмарки, настройка и выбор логгера для Node.js

JWT стал стандартом де-факто для аутентификации в SPA и микросервисах. Но простота формата обманчива — за ней скрываются ловушки, которые превращают токен из инструмента безопасности в уязвимость.…

0 10K
Николай Ломов

Node.js Cluster и PM2: масштабирование приложения на все ядра CPU

Если вы строите контентный сайт — блог, документацию, лендинг — и устали от того, что Next.js тащит на клиент сотни килобайт JavaScript ради одной кнопки, пора посмотреть на Astro. Этот фреймворк по…

0 15K
Николай Ломов

PostgreSQL CTE: рекурсивные запросы, материализация и подводные камни

Common Table Expressions (CTE) — один из самых мощных инструментов PostgreSQL для сложных запросов. Но за удобством скрываются нюансы: материализация может убить производительность, рекурсия — уйти в…

0 13K
Николай Ломов

Async/await в Python: asyncio vs trio в продакшене

# Grafana Loki: централизованные логи без Elasticsearch Если вы устали от тяжеловесного ELK stack, который съедает гигабайты RAM и требует постоянного внимания к шардам — пора познакомиться с Grafana…

0 42
Сергей Асинхронов

Qwik framework: resumability вместо hydration — будущее фронтенда?

Каждый фронтенд-фреймворк с SSR сталкивается с одной проблемой: сервер отрендерил HTML, но страница мертва — кнопки не кликаются, формы не работают. Чтобы оживить интерфейс, нужна гидрация: скачать…

0 10K
Светлана Морозова

useCallback в React: когда реально нужен, а когда вредит

Типичный Docker-образ Node.js-приложения на базе node:18 весит больше гигабайта. В проде вам не нужны ни компилятор, ни dev-зависимости, ни исходники TypeScript. Multi-stage builds решают эту…

0 17K
Светлана Морозова

Pydantic v2: что нового, миграция с v1 и реальные бенчмарки

В 2026 году спор «Zustand или Redux Toolkit» — это уже не холивар фанатов, а практический выбор архитектуры. Оба инструмента зрелые, оба поддерживают TypeScript из коробки. Но подходят они для разных…

0 15K
Мария Соколова

Event loop в Node.js: phases, microtasks и оптимизация производительности

В высоконагруженных микросервисах rate limiting — это не просто защита от DDoS, а инструмент управления ресурсами. Он предотвращает перегрузку сервисов, защищает от злоупотреблений API и обеспечивает…

0 11K
Виктория Перформансова

Node.js memory leaks: находим и устраняем утечки памяти в продакшене

Сервис работает неделю, потом начинает тормозить и падает с OOM. Знакомо? Утечки памяти в Node.js коварны: GC не может собрать объекты, на которые кто-то ссылается, даже если вы про них забыли.…

0 19K
Николай Ломов

REST API pagination: cursor vs offset на больших данных

# Semantic versioning и автоматический changelog Версионирование — это не просто цифры в package.json. Это контракт с пользователями: что сломается, что добавится, что исправится. Когда проект…

0 43
Дмитрий Соколов

Unity Addressables на практике: как структурировать ассеты без ада

Addressables я подключал на трёх проектах разного масштаба: маленький мобильный F2P, средний ПК-инди и большой live-service на iOS+Android. Каждый раз через два-три месяца после внедрения я смотрел…

488 19K
Виктор Голубев

JSONB в PostgreSQL: индексирование, запросы и производительность vs relational

WebSocket — это полнодуплексный протокол для real-time коммуникации между клиентом и сервером. В отличие от HTTP, где клиент инициирует каждый запрос, WebSocket позволяет серверу отправлять данные…

0 17K
Сергей Дейтабейзов

asyncio в Python: паттерны конкурентности, которые работают в проде

Когда Redis упирается в лимит памяти, он не падает молча — он начинает вытеснять ключи по заданной стратегии. Выбор правильной eviction policy определяет, потеряете ли вы критичные данные или…

0 18K
Мария Соколова

PostgreSQL VACUUM: как работает автовакуум и когда настраивать вручную

PostgreSQL не удаляет строки физически. При UPDATE или DELETE старая версия строки (dead tuple) остаётся на диске — она нужна для MVCC, чтобы параллельные транзакции видели консистентные данные. Но…

0 11K
Игорь Беляев

requests vs limits в Kubernetes: реальная разница и как ставить адекватные значения

Когда приходишь в новый проект на k8s, первое, что бросается в глаза — это либо полное отсутствие resources у pod-ов, либо одинаковые requests/limits на всех контейнерах, скопированные из чужого…

155 14K
Дмитрий Орлов

Go sync.Map vs RWMutex: когда какой примитив синхронизации выбрать

Если вы работали с Go и горутинами, то наверняка видели панику fatal error: concurrent map writes. Встроенный map в Go не потокобезопасен — любой конкурентный доступ без синхронизации приводит к…

0 13K
Игорь Беляев