Все потоки
Поиск
Написать публикацию
Обновить
117.99

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

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

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

Неожиданные причины торможения программ и систем

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

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

Я назвал пост Surprisingly Slow потому, что замедление было для меня неожиданным, или неоптимальные практики, ведущие к замедлению, настолько распространены, что многие программисты будут удивлены их существованию.

Разделы поста чаще всего никак не связаны друг с другом, поэтому можете выбирать самые интересные для вас.
Читать дальше →

SSE, нотификации, Node.js и при чём тут C#?

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

Вписавшись в очередной провальный заранее стартап, мне прилетела задача: нужны уведомления на сайте. Ладно - сказал я себе. Открываю любимую IDE и начинаю писать очередной микросервис.

До этого я никогда не занимался уведомлениями, но был осведомлен, что есть для этого несколько путей: WebSocket, SSE и Long Polling.

Читать далее

Нагрузочное тестирование игровых серверов

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

image


Меня зовут Дмитрий, я специалист по тестированию в студии IT Territory. За 17 лет мы выпустили более 15 успешных игровых проектов с общей аудиторией около 100 млн игроков по всему миру. Вы можете быть знакомы с нами по таким проектам, как Аллоды Онлайн, Hawk, Space Justice, World Above, Rush Royale. И в этом посте я расскажу о том, как мы проводим нагрузочное тестирование игровых серверов.

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

DCIM-платформа Racks: почему мы отказались от энтерпрайз-решения в пользу самописного приложения

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

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

Собственно, о том, как «вылупилась» и развивается DCIM-система, которую мы назвали Racks, мы сегодня и расскажем. Что сейчас может приложение и почему мы в итоге отказались от стороннего решения? Ченджлог подняли руководитель направления DCIM Вячеслав Литвинов и разработчик систем управления инфраструктурой дата-центров Николай Огоров.

Батлрояль за 2 месяца: как мы обновили сетевой код и на 20% сократили траты на сервера

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

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

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

Читать далее

PvP-шутер без даунтаймов: архитектура, аварийные режимы и сервера с рубильником

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

Мы уже рассказывали, почему первая версия архитектуры игры не была идеальной. Pixel Gun 3D изначально был прототипом в новом для команды жанре PvP-шутер. Хотели протестировать идею, чтобы собрать фидбек от игроков, но популярность игры начала расти достаточно быстро — писать ее заново было уже поздно. Сейчас подход к разработке новых проектов у нас сильно изменился, но зато тогда, без опыта, мы не потратили уйму времени на создание прототипа, который мог оказаться неинтересным для игроков.

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

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

Читать далее

Выше 90 баллов PageSpeed на WordPress — это реально

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

С июля 2018 Google начали учитывать скорость страниц в выдаче. В ноябре 2019 года они добавили отчет о скорости страниц в личный кабинет Web Search Console. В июне 2021 они ужесточили критерии PageSpeed, подняв влияние Total Blocking Time (TBT) с 25% до 30% и Cumulative Layout Shift (CLS) с 5% до 15%.

Читать далее

Антистресс для твоего сервера. Тестируем балансировщик нагрузки от Timeweb

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

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


Сегодня мы расскажем сообществу о запуске нашего нового сервиса — балансировщик нагрузки.

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

Ребята, почему только сейчас?


Можете вполне резонно спросить вы. Мы, как и все, привыкаем к новой, постпандемийной (или еще нет?), реальности и отвечаем запросам наших клиентов.

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

Как ускорить сайт в 4 раза, просто перенастроив сервер

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

Если вы работаете с сайтом, который постепенно растет, - увеличивается количество товаров, трафик с рекламы - то рано или поздно придется перейти в режим работы highload, высоких нагрузок на сервер. Но что делать, если ваш сайт не растет, а сервер все чаще не выдерживает, и происходит блокировка данных? Именно с этой проблемой мы столкнулись, дорабатывая сайт для интернет-магазина светового оборудования с ассортиментом более чем 100 000 товаров.

Читать далее

Необычные подходы к охлаждению дата-центров

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

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

Решили порадовать вас подборкой неординарных подходов для охлаждения дата-центров:

майнинговая ферма в Сибири,

подводный дата-центр компании Microsoft возле Шотландии,

и даже охлаждение серверов в масляной ванне!

Читать далее

Многопоточный HTTP-сервер с ThreadPool’ом и конечным автоматом

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

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

Читать далее

Quantization Aware Training. Или как правильно использовать fp16 inference в TensorRT

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

Low-precision inference в TensorRT сегодня - мастхэв, бест практис и прочие иностранные. Сконвертить из TensorFlow легко, запустить легко, использовать fp16 легко. Да и КПД выше, чем у pruning или distillation. На первый взгляд всё работает идеально. Но на самом деле всё ли так гладко? Рассказываем, как мы в TrafficData споткнулись об fp16, встали и написали статью.

Читать далее

Ускоряем загрузку веб-страниц: тестируем 4 стратегии оптимизации изображений

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


Статистика не устаёт повторять нам про устойчивую корреляцию между падением скорости загрузки страниц сайта и ростом частоты отказов со снижением конверсии. Я не открою Америку, если скажу, что работу сайта замедляет «раздутая» полезная нагрузка (с плохо оптимизированными изображениями и избыточным HTML-кодом). Это заставляет сервер выполнять лишнюю работу. Огромный пласт такой работы связан с проблемами оптимизации изображений. 

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

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

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

Лучшие CDN для работы в России и в мире: сравнительный обзор

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

Введение


Сети доставки контента (CDN) в наши дни получили широкое распространение. Это вполне понятно: растёт число интернет-сервисов с глобальной аудиторией, и почти все такие сервисы так или иначе связаны с доставкой тяжелого (фото-, аудио-, видео- и не только) контента.


Число пользователей Интернета, в особенности — мобильного, растёт с каждым днём, и создатели сайтов и приложений вполне закономерно задумываются об обеспечении быстрой работы в любой точке мира. Спрос рождает предложение — и количество компаний, предлагающих услуги CDN, тоже постоянно растёт. Достаточно набрать в Гугле соответствующий запрос — и в поисковой выдаче будет представлено огромное количество рекламных объявлений.


Как выбрать действительно качественного провайдера CDN? На что обратить внимание в первую очередь?


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

Сравнение производительности ASP.NET Core-проектов на Linux и Windows в службе приложений Azure. Продолжение

Время на прочтение4 мин
Количество просмотров6K
В моём предыдущем материале речь шла о сравнении производительности ASP.NET Core-приложений, запускаемых в Windows и в среде Linux + Docker, работающих в службе приложений Azure. Эта тема интересна многим — поэтому я решил написать продолжение.



Я снова провёл испытания, используя подход, отличающийся от прежнего лучшей воспроизводимостью, такой, который даёт более надёжные результаты. Теперь я генерирую веб-нагрузку на серверы с помощью облачных инструментов Azure Cloud Agents, применяя Visual Studio и VSTS. И, более того, в то время как ранее я выполнял тесты с использованием HTTP, теперь тестирование проводилось с применением HTTPS.
Читать дальше →

Сравнение производительности ASP.NET Core-проектов на Linux и Windows в службе приложений Azure

Время на прочтение8 мин
Количество просмотров11K
Что быстрее — ASP.NET Core-приложение, развёрнутое в Docker-контейнере на Linux, или такая же программа, но запущенная на Windows-сервере, учитывая то, что всё это работает в службе приложений Azure? Какая из этих конфигураций предлагает более высокий уровень производительности, и о каком «уровне производительности» можно говорить?


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

Как сделать кластерный сервер на ARM процессоре и тестирование VPS на AWS Graviton2

Время на прочтение8 мин
Количество просмотров10K
Cluster Server ARM

В предыдущей публикации рассматривались преимущества использование ARM серверов для хостинг провайдеров. В этом посте рассмотрим практические варианты создания кластерного сервера на ARM процессоре и протестируем инстанс Amazon EC2 T4g работающий на процессоре ARM AWS Graviton2, посмотрим на что он способен.
Читать дальше →

Как померить Node.js-приложение, если у тебя лапки. Доклад Яндекса

Время на прочтение15 мин
Количество просмотров11K
Неважно, каких размеров ваше приложение на Node.js. Неважно, как хорошо вы написали код. Вам просто необходимо знать, как он работает в продакшене. Разработчик интерфейсов в поисковом портале Яндекса Алексей Попков сделал доклад о том, как выяснить, что происходит внутри запущенного процесса.

Что нужно, чтобы заглянуть в этот чёрный ящик? Ответ — опенсорс, все бесплатно, бери и внедряй.

— Всем привет. Немножко про то, кто я такой. Меня зовут Лёша, я разрабатываю внутренние сервисы Яндекса. Уже третий год делаю всякие Node.js-приложения, менторю разработчиков в Яндекс.Практикуме и измеряю все, до чего дотягиваются руки, потому что это весело.
Читать дальше →

ARM серверы подходят для облачного хостинга лучше чем x86? Проверим

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


Если вам нужна была высокая производительность, то вам нужно было выбирать процессор на x86 для своих решений. В последнее время, все больше и больше говорят о закате архитектуры x86 и переходе на ARM. В прошлом году компания Apple впервые представила Mac на процессорах ARM. Но подойдет ли процессор ARM для дата-центров, сможет ли ARM навсегда отправить x86 на скамью запасных?
Читать дальше →

Профилирование Node.js. Доклад Яндекса

Время на прочтение18 мин
Количество просмотров9.2K
Полтора года назад я выступил на FrontendConf и посвятил 40 минут профилированию. Перечисленные приемы и инструменты по-прежнему актуальны — сегодня публикую видео с подробным конспектом. Доклад расскажет, что такое профилирование, научит локализовывать потенциальные утечки памяти, а также немного углубит ваше понимание инструмента DevTools.

— Всем привет. Меня зовут Артём Несмиянов, я fullstack-разработчик Яндекс.Практикума. И, как видите, сегодня я хочу рассказать о профилировании Node.js, хотя это не совсем фронтендерская тема. Но сейчас очень много приложений используют фронтбэк, где есть свой server-side rendering, где нужно это все отдавать клиенту, и фронтендеру часто приходится взаимодействовать с Node.js. Иногда происходят вещи, которые могут повлиять на ваш сервер, положить его, перегрузить и так далее. С этим надо бороться. Я хочу показать, какие методы использовали мы. Это скорее введение в профилирование Node.js.
Читать дальше →