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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Источник: Huawei.

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

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

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

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

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

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

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

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

Истории

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Leak Canary

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Django, ImageField и .webp. Ещё немного про ускорение web приложения и экономию дискового пространства

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

Доброго времени суток уважаемый читатель. Хотелось бы немного поговорить об оптимизации наших с вам любимых WEB приложений, написанных на нашем горячо любимом и всеми уважаемом фреймворке Django. В частности речь в этой статье пойдёт об оптимизации изображений. А теперь по порядку.

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

Бескомпромиссная мощь на стиле: Altos BrainSphere P150 F8 для разработки ИИ и 3D-графики

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

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

Отвечая на запросы требовательных пользователей, компания Altos выпустила рабочую станцию Altos BrainSphere P150 F8, которая объединяет в себе высочайшую производительность и передовые технологии. В этом посте мы поговорим о том, какие компоненты этой станции обеспечивают качественное выполнение задач, требующих мощных графических вычислений.

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

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

7 – 8 ноября
Конференция byteoilgas_conf 2024
МоскваОнлайн
7 – 8 ноября
Конференция «Матемаркетинг»
МоскваОнлайн
15 – 16 ноября
IT-конференция Merge Skolkovo
Москва
22 – 24 ноября
Хакатон «AgroCode Hack Genetics'24»
Онлайн
28 ноября
Конференция «TechRec: ITHR CAMPUS»
МоскваОнлайн
25 – 26 апреля
IT-конференция Merge Tatarstan 2025
Казань

Как мы выдержали x20 рост нагрузки на сервис Авито Автозагрузка

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

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

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

Что бы я хотел знать до переноса 50 000 строк кода на серверные компоненты React

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

Серверные компоненты React – это большой кусок работы. Недавно мы переосмыслили нашу документацию и устроили ребрендинг Mux. Пока мы этим занимались, мы перенесли весь материал сайтов mux.com и docs.mux.com на серверные компоненты. Так что, поверьте мне… я знаю. Знаю, что это возможно, не так страшно и, в принципе, что дело того стоит.

Давайте я вам объясню, почему, ответив на следующие вопросы: почему так важны серверные компоненты, а также для чего они хорошиДля чего они не так хорошиКак их использоватькак их постепенно внедрять и какие продвинутые паттерны следует использовать, чтобы всем этим управлять? Дочитав эту статью, вы станете замечательно представлять, следует ли вам использовать серверные компоненты React, а если следует – то как использовать их эффективно.

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

S3-FIFO: новый эффективный алгоритм вытеснения из кэша на основе очередей FIFO

Уровень сложностиСредний
Время на прочтение18 мин
Количество просмотров8.5K
В этой статье я расскажу о простом и масштабируемом (Simple, Scalable) алгоритме вытеснения данных из кэша на основе трёх статических (Static) очередей FIFO (S3-FIFO). После проверки на 6594 трассировках кэшей 14 компаний мы показали, что S3-FIFO имеет меньшую частоту промахов, чем 12 лучших алгоритмов, разработанных в прошлые десятилетия. Более того, эффективность S3-FIFO устойчива — он имеет наименьший средний показатель промахов для 10 из 14 датасетов. Использование очередей FIFO позволяет S3-FIFO достичь хорошей масштабируемости с пропускной способностью в шесть раз больше по сравнению с оптимизированным LRU в cachelib на 16 потоках.

Мы пришли к выводу, что доступ к большинству объектов в смещённых нагрузках кэша выполняется только за короткий промежуток времени, поэтому критически важно быстро вытеснять их из кэша. А главная особенность S3-FIFO — это небольшая очередь FIFO, отфильтровывающая большинство объектов, не давая им попасть в основной кэш.

Иллюстрация работы S3-FIFO (с использованием порогового значения перехода из маленького в основной кэш, равного 1)
Читать дальше →
Всего голосов 69: ↑69 и ↓0+69
Комментарии5

Как WhatsApp справлялся с 50 миллиардами сообщений в день, имея всего 32 инженера

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

Январь 2008 года — Калифорния, США.

Инженер Ян Кум нанимается на работу в Facebook* — получает отказ.

Это был не конец — он продолжил двигаться дальше.

В следующем году он покупает iPhone и сразу же понимает огромный потенциал нового App Store.

С несколькими бывшими коллегами из Yahoo он решает создать программу мгновенного обмена сообщениями. Программе дают имя WhatsApp. Предназначение WhatsApp — стать заменой дорогостоящим SMS.

Рост популярности WhatsApp поражает воображение — каждый день в него заходит один миллион людей.

WhatsApp мог справляться с 50 миллиардами сообщений в день от 450 миллионов активных пользователей, имея в штате всего 32 инженера.

Хотя взрывной рост продукта — это приятная проблема, для её решения Яну Куму и команде разработчиков WhatsApp пришлось применить самые передовые технологии проектирования.
Читать дальше →
Всего голосов 60: ↑48 и ↓12+57
Комментарии76

Опыт адаптации Firecracker под FreeBSD

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

Сколько родилось отличных проектов open source, потому что у кого‑то руки чесались что‑то попробовать! Именно так было и в случае с Firecracker. В 2014 году компания Amazon запустила AWS Lambda, которую позиционировала как «бессерверную» вычислительную платформу. В AWS Lambda пользователь может задать функцию — скажем, десять строк кода на Python — а Lambda в ответ достроит всю требуемую инфраструктуру, чтобы сработала цепочка: прибывает HTTP‑запрос, вызывается функция, запрос обрабатывается, и, наконец, генерируется ответ.

Чтобы этот сервис работал безопасно и эффективно, Amazon нужно было разработать механизм, который позволял бы с минимальными издержками запускать виртуальные машины. Так появился Firecracker. Это монитор виртуальных машин (VMM), работающий совместно с Linux KVM. Он запросто создаёт «микро-VM» и управляет ими.

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

Анализ эффективности кэширования на бэкенде ЛК МегаФон

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

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

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

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

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

Монтируем шары для юзеров

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

Всем привет. Монтируете ли вы шары, как их монтирую я? Вероятно, нет, т. к. очень крутой опции multiuser на просторах интернета уделено слишком мало внимания, а man mount.cifs в её отношении весьма немногословен и скуп на наглядные примеры. Именно это и сподвигло меня поделиться с вами парой «рецептов», которые могут облегчить вам и вашим пользователям движение в сторону отечественных десктопов и ИТ-инфраструктур.
Читать дальше →
Всего голосов 52: ↑52 и ↓0+52
Комментарии9