Как стать автором
Обновить
11.59

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

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

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

Сравнение технологий WebSockets, Server-Sent-Events, Long-Polling, WebRTC и WebTransport

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

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

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

Читать далее
Всего голосов 20: ↑20.5 и ↓-0.5+21
Комментарии4

Новости

Достижение высокой пропускной способности без усугубления задержки

Время на прочтение6 мин
Количество просмотров966
Задержка и пропускная способность

При обсуждении производительности часто встречаются термины «задержка» (latency) и «пропускная способность» (throughput) для описания характеристик программного компонента.
Мы можем дать следующее толкование этим терминам:

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

Можно применить понятие задержки и к областям, не связанным с IT. Представьте, что вы посещаете свой любимый фаст-фуд. В данном случае, задержка — это время, которое требуется для того, чтобы сделать заказ, собрать его, оплатить и затем получить. Очевидно, что чем меньше задержка — тем лучше.
Читать дальше →
Всего голосов 3: ↑4 и ↓-1+5
Комментарии0

zVirt Hosted Engine: практика развертывания в картинках

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

Привет, друзья! С этой статьи компания Orion soft начинает вести свой блог на Хабре. Сегодня я расскажу о том, как происходит развертывание системы виртуализации zVirt. Текст предназначен для тех, кто еще ни разу не работал с нашим гипервизором, но в тайне (или явно) мечтает об этом. Мы с коллегами решили помочь вам сэкономить свое время, познакомившись с процессом деплоя виртуально, и подготовили инструкцию how-to (можно повторять все прямо за нами). Под катом — подробный гайд по развертыванию zVirt в режиме Hosted Engine (то есть прямо на ваших хостах) с примерами значений, рекомендациями по базовым настройкам и понятными скриншотами. Так что если вы ждали знак, чтобы решиться установить у себя zVirt, вот он. Время пришло сегодня :)

Читать далее
Всего голосов 21: ↑19 и ↓2+17
Комментарии19

Это мы юзаем: библиотека Optuna в Python для оптимизации гиперпараметров

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

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

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

Традиционный подход к оптимизации гиперпараметров включает в себя grid search и random search, иногда они могут быть неэффективными и времязатратными, особенно когда пространство гиперпараметров велико.

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

Optuna решает проблему оптимизации гиперпараметров, предоставляя легковесный фреймворк для автоматизации поиска оптимальных гиперпараметров. Она использует алгоритмы, такие как TPE, CMA-ES, и даже поддерживает пользовательские алгоритмы.

Optuna полностью написана на Python и имеет мало зависимостей. В этой статье рассмотрим её основной функционал.

Читать далее
Всего голосов 21: ↑20 и ↓1+19
Комментарии2

Истории

Тайное знание: синхронизация, многопоточность, очереди

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

Может ли быть так, что в большинстве популярных языков отсутствует самый эффективный механизм синхронизации? Что инженеры Microsoft, Oracle и мн. др., не говоря уже об остальных, вплоть до 2024 года так и не догадались, как же эффективнее всего синхронизировать доступ к данным? А все что знает абсолютное большинство программистов, в том числе топовых IT компаний (за исключением редких разработчиков платформ Apple) о синхронизации — ошибочно? Сегодня попробуем разобраться.

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

Читать далее
Всего голосов 21: ↑10 и ↓11-1
Комментарии73

Большая шпаргалка по Docker: как распилить монолитный проект на части

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

Погружение в мир контейнеризации с докером — это путь к оптимизации развёртыванию приложений, а также ключ к упрощению жизни разработчиков и системных администраторов. Меня зовут Андрей Аверков, в IT c 2008 начинал пусть с аналитика-проектировщика IT систем, 11 лет в роли разработчика и последние годы на руководящих должностях. Сейчас я тимлид команды разработки из 9 человек в группе компании Кокос. Мы занимаемся созданием и поддержкой CPA платформ (gdeslon.ru, fxpartners.ru, ads.mobisharks.com), а также проектом по генерации лендингов — lpgenerator.ru. У нас большой опыт в разделении продуктов на части, поэтому, сегодня мы собрали самое основное и необходимое для работы с Docker. В нашей шпаргалке вы найдете все необходимое для успешного старта с докером: от базовых концепций и установки до продвинутых техник работы с контейнерами.

Читать далее
Всего голосов 23: ↑18 и ↓5+13
Комментарии11

«Поздравляем с терабитом». Та самая статья про DDoS-2023 — без цензуры

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

Дисклеймер ↓

Этот материал должен был выйти в декабре 2023, прямо перед Новым годом, — и это классический пример про «лучшее враг хорошего». Сначала нам не нравилось, что мало подробностей. Потом — что их излишне много. Была версия с цитатами, но без скринов. Со скринами, но без цитат. Мы записали столько интервью с сетевиками, что сами в них запутались.

Но в итоге сегодня наша статья наконец-то выходит в свет. Из цензуры — только внимательная рука корректора. Передаем слово Максу Яковлеву.
Читать дальше →
Всего голосов 106: ↑104 и ↓2+102
Комментарии46

Обзор балансировщика traefik

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

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

Traefik - современный и мощный балансировщик нагрузки.

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

Читать далее
Всего голосов 14: ↑10 и ↓4+6
Комментарии7

Без 5% VMware? Обзор свежего релиза платформы виртуализации zVirt 4.1

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

Хабр, привет! На связи Алексей Зотов из К2Тех, и сегодня я хочу поговорить об одном из российских решений для виртуализации. Сегмент этот в каком-то смысле уникален. Если в целом по рынку заказчик выбирает между 5–6 отечественными продуктами для решения задачи импортозамещения (например, это ярко видно на примере СРК или служб каталога). То в сегменте виртуализации мы насчитали уже более трех десятков конкурирующих платформ!

В предыдущих статьях про тестирование серверов Inferit и Аквариус, а также про создание суперкомпьютера я упоминал платформу zVirt. Мы с этим продуктом работаем уже довольно давно, неплохо его изучили и можем оценить его развитие. Тем более, вендор Orion soft позиционирует zVirt как конкурентную альтернативу VMware. Пора проверить это заявление. 

Я решил испытать этот продукт и протестировать новые фичи, которые появились в zVirt 4.1: Disaster Recovery (DR), V2V-миграция из VMware, управление сетями SDN. Результаты тестирования и впечатления от платформы – под катом.

Читать далее
Всего голосов 45: ↑44 и ↓1+43
Комментарии23

Как Сбербанк Онлайн готовится к пиковым нагрузкам

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

Какие проблемы появляются при переходе из монолитной архитектуры к микросервисной? Как с ними справляться в пиковые нагрузки? Ответим на эти вопросы на примере Сбербанк Онлайн.

Меня зовут Артём Арюткин, я руковожу проектным офисом в Сбере. Весь мой профессиональный опыт завязан на то, чтобы сделать Сбербанк Онлайн надёжнее. Расскажу про основные принципы отказоустойчивой архитектуры и весь путь эволюции Сбербанк Онлайн.

Читать далее
Всего голосов 39: ↑39 и ↓0+39
Комментарии26

Пишем Ansible-модули для управления разными системами хранения данных через Swordfish

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

Большинство современных систем хранения данных (СХД) предоставляют REST API для управления ими, включая настройку, конфигурирование, выполнение различных команд, получение логов, работу с пользователями и т.д. В зависимости от производителя СХД REST API могут отличаться друг от друга. Если вы используете несколько разных систем, их одновременная поддержка становится проблемой: нужно учитывать многообразие протоколов, интерфейсов, команд и способов взаимодействия с API.

Меня зовут Александр Пономарев, вместе с группой студентов СПбПУ Петра Великого на базе Лаборатории YADRO мы изучали способы сделать управление разными СХД менее трудоемким. Вариант, на котором мы остановились, — использовать системы, которые удовлетворяют спецификации Swordfish, в связке с Ansible. Подробнее о проекте, который мы выполняли с инженерами компании и преподавателями университета, рассказываю под катом.

Читать далее
Всего голосов 9: ↑9 и ↓0+9
Комментарии2

Что такое LUN-СХД, или как мы виртуализировали хранилище

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

Источник: Huawei.

Вся жизнь — это выбор. Между Apple и Android, MySQL и PostgreSQL, здоровым питанием и тортом после 18:00. Но как быть, если его хочется, а отрабатывать калории в зале — не очень? Обычно весь торт есть не заставляют, поэтому его можно нарезать небольшими частями и использовать по необходимости.

С данными в СХД такая же ситуация: можно использовать все пространство, а можно ограничиться LUN и оптимизировать бюджет. О том, что такое LUN, когда и где лучше использовать технологию — читайте в материале.
Читать дальше →
Всего голосов 38: ↑34 и ↓4+30
Комментарии7

Эффективность на максимум: Микрооптимизации в Golang

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

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

Каждая миллисекунда имеет значение, микрооптимизация это must have, особенно на языке Go.

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

Читать далее
Всего голосов 33: ↑18 и ↓15+3
Комментарии11

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

Как использовать ресурсы Kubernetes по максимуму для работы с Go-приложениями

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

Привет! Меня зовут Антон Жуков, я руковожу группой разработки в Сбермаркете. В профессии я уже более 12 лет, с Golang работаю с 2016 года, а с Kubernetes — с 2018 года.

В этой статье расскажу об основах Kubernetes, возможных проблемах и решениях, а также о том, как грамотно использовать ресурсы этой платформы, чтобы выжать максимум из Go-приложений. Кроме того, в конце статьи я опишу кейс настройки GOMAXPROCS на примере нашего приложения и расскажу, как нам удалось повысить его производительность на 20-50%.

Читать далее
Всего голосов 24: ↑23 и ↓1+22
Комментарии3

EF Core. Как 1 строчка может добавить x4 к быстродействию запросов к БД?

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

Многие, кто использует EF Core в работе в качестве ORM (Object-Relational Mapping) встречаются с множеством прелестей этого инструмента.

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

Читать далее
Всего голосов 16: ↑9 и ↓7+2
Комментарии35

Жук, нумерология, хеш или ничо? Оптимизация работы с путями

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

Привет, Хабр! Меня зовут Евгений Кузьмин, я Java‑разработчик в CDEK. Надеюсь, все знают, что это за компания и чем занимается. Давайте представим, что вам нужно отправить посылку с гостинцами родственнику в Москву из Новосибирска. Вы приходите в ближайший пункт приёма посылок и оформляете услугу доставки. Что же происходит дальше? Казалось бы, всё очевидно: посылка сразу летит или едет из Новосибирска в Москву. Но всё не так просто...

Думаю, все согласятся, что не рационально гнать отдельную фуру с одной коробочкой для каждого заказа. Наша задача выстроить логистику таким образом, чтобы по пути загрузить и выгрузить как можно больше посылок и поехать дальше. В этой статье я поделюсь с своим опытом оптимизации задачи по редактированию и поддержке в актуальном состоянии огромного количества данных типа «куда направить товар». Классическая задача программирования на практике логистики. При этом мы не будем выходить за рамки стандартного стека Java Springboot и Postgres. Статья будет полезна разработчикам (от джуна до сеньора), которым интересно погрузиться в трудовые будни разработчика в сфере транспортной логистики.

Читать далее
Всего голосов 26: ↑25 и ↓1+24
Комментарии17

Оптимизируем Android приложение в пару подходов

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

Работа с утечками памяти

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

Одна из самых распространенных проблем оптимизации, с которой сталкиваются разработчики Android, это утечки памяти. Утечка памяти в Android-приложениях происходит, когда объекты, которые больше не используются, по какой-то причине не удаляются сборщиком мусора и продолжают занимать память. Это может привести к избыточному потреблению ресурсов и снижению производительности приложения.

Leak Canary

Leak Canary — это открытая библиотека для Android, которая помогает обнаруживать утечки памяти в вашем приложении. Как только утечка обнаружена, Leak Canary предоставляет уведомление с отчетом, который помогает разработчикам быстро найти и устранить причину утечки. Вся суть работы Leak Canary заключается в следующем: при добавлении зависимости в проект, в процессе его сборки интегрируется отдельный модуль. Этот модуль отслеживает жизненный цикл ссылок основных компонентов Android (и не только). Основная цель этого инструмента — обнаруживать утечки памяти, связанные с долгоживущими объектами, такими как активности, фрагменты и другие компоненты Android, которые не были корректно очищены.

Читать далее
Всего голосов 2: ↑2 и ↓0+2
Комментарии0

Разработка высокопроизводительного кеш-слоя на основе Redis в телеграм-боте

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

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

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

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

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

Читать далее
Всего голосов 15: ↑10 и ↓5+5
Комментарии2

Борьба с временем ответа сервиса

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

История о том, как время ответа сервиса выросло в несколько раз в течение месяца, в чем была причина, и какое в итоге нашли решение.

Расскажите мне немедленно!
Всего голосов 12: ↑8 и ↓4+4
Комментарии18

Как мы проводим миграцию оборудования, пока наши клиенты спят

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

Привет, Хабр! Меня зовут Василий, я инженер по диагностике оборудования в Selectel. Мы постоянно работаем над шерингом знаний в командах, чтобы ускорять процессы установки и замены оборудования. Сегодня хочу рассказать, как устроена миграция серверов в контуре провайдера, и что при этом чувствует клиент.

Миграция серверов необходима для утилизации мощностей, оптимизации охлаждения и упорядочивания конфигураций, поскольку мы стремимся размещать новые стойки рядом с парком, который уже арендован клиентом. Наша главная цель при переезде — повысить качество сервиса, минимизировать риски и даунтаймы. Положения о качестве предоставляемых услуг фиксируются в SLA, поэтому мы также делаем процессы прозрачнее для всех. За историей о том, как это работает, — приглашаю под кат.
Читать дальше →
Всего голосов 45: ↑44 и ↓1+43
Комментарии7
1
23 ...