Обновить
54.3

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

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

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

Сервак с мезонином  (почти по Чехову)

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

Производители серверов во все времена придумывали всякие нестандартные разъемы для подключения внешних адаптеров, которые называли обобщенно «Mezzanine card». Будучи проприетарными по физическому исполнению, в большинстве случаев они были просто другой распиновкой шины PCI Express. Причиной такого инженерного творчества была необходимость не занимать под адаптеры ценные малочисленные штатные разъемы той же шины, которых дефицит в особенно популярных серверах высотой 1U.

В отличие от десктопных систем малого форм-фактора (все эти Slim,Tiny PC), которые один американский обозреватель едко назвал «Системы, необходимые в условиях низколетающих самолетов», в серверах подобная минимизация высоты корпуса влечет прямую выгоду при размещении их в провайдерских стойках, до 42 штук в один шкаф.

Другая причина - возможность выпускать в этом «нестандартном стандарте» свои адаптеры, которые нечем заменить.

Что там у сервера под крышкой?

Алгоритмы балансировки нагрузок

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

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

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

Готов для ML, VDI и остального: обзор сервера Altos BrainSphere R360F5

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

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

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

В этом посте мы расскажем о сервере Altos BrainSphere R360 F5, который подойдёт для самых ресурсоёмких задач. Как, к примеру, насчёт 4 ТБ RAM в 1U корпусе? Но давайте обо всём по порядку. 

Читать далее

Строка на 1,5 гигабайта

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

На своей предыдущей работе я занимался поддержкой Java-сервиса, обеспечивавшего удалённую функциональность UI подобно RDP или Citrix. Этот сервис был устроен на основе сессий, состоявших из взаимосвязанных объектов Java, которые должны были очищаться или после выхода пользователя, или после истечения заданного таймаута.

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

Перенос в Docker монолитного SAAS-сервиса

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

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

Читать далее

Дефрагментация таблиц в высоко нагруженных базах данных (MSSQL)

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

Хорошо, если у вас небольшие (сотни гигабайт) базы, а ночью или в выходные вы можете себе позволить иметь 'maintenance window' и дефрагментировать таблицы. А если нет? В любом случае дефрагментация многих терабайт может занять дни, так что существование maintenance window становится непринципиальным.

Case study: многие терабайты данных, деятельность связанная с процессингом карт (24/7, maintenance window нет в принципе), MSSQL. Разумеется, Enterprise Edition, разумеется AlwaysOn.

Миф: у нас SSD, поэтому дефрагментация нам не нужна. Еще как нужна! Часто в высоко нагруженных системах не делают дефрагментацию, потому что это сложно. В итоге процент фрагментации выходит на уровень почти 100%, и таблицы занимают в два раза больше страниц, чем нужно. В два раза больше места - это в два раза хуже Buffer Cache Hits Ratio. Это в два раза больше размер full backups. Это в два раза дольше full table scans. Это выше CPU (потому что страницы перемещаются с помощью процессора, а не сами по себе).

Читать далее

Как мы создаём корпоративную почтовую систему нового поколения Mailion. Оптимизация стоимости хранения данных

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

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

Одна из наиболее ресурсоемких категорий софта сегодня — это системы хранения данных. К ним можно отнести как классические СУБД, так и хранилища различного назначения. В корпоративной почтовой системе Mailion мы используем объектное хранилище собственной разработки — Dispersed Object Store (DOS). Mailion поддерживает одновременную работу до миллиона пользователей, и подобный уровень нагрузки выдвигает существенные требования к производительности и экономической эффективности системы.

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

Читать далее

Neural Network Optimization: океан в капле

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

Всех приветствую, меня зовут Антон Рябых, работаю в Doubletapp. Вместе с коллегой Данилом Гальпериным мы написали статью про важный этап в процессе обучения нейронных сетей и получения необходимых нам результатов —  оптимизацию модели. Зачем нужно оптимизировать модель, если и так все работает? Но как только вы начнете разворачивать модель на устройстве, которое будет ее обрабатывать, перед вами встанет множество проблем.

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

Оптимизация моделей направлена на уменьшение размера моделей при минимизации потерь в точности и производительности.

Методы оптимизации

Pruning — устранение части параметров нейронной сети.
Quantization — уменьшение точности обрабатываемых типов данных.
Knowledge distillation — обновление топологии исходной модели до более эффективной, с уменьшенным количеством параметров и более быстрым выполнением.
Weight clustering — сокращение количества уникальных параметров в весах модели.
OpenVino, TensorRT — фреймворки, с помощью которых можно оптимизировать модели.

Читать далее

Как работает поиск по коду на Github

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


От запуска ознакомительной версии нового улучшенного поиска кода год назад до публичной беты, которую мы выпустили на GitHub Universe в прошлом ноябре, появилась масса инноваций и резких изменений в некоторых основных продуктах GitHub, затрагивающих то, как мы, разработчики, осознаём, читаем код и ориентируемся в нем.


Нам часто задают вопрос о новом поиске по коду: «Как он работает?». В дополнение к моей лекции на GitHub Universe, я в общих чертах отвечу на этот вопрос, а также немного расскажу о системной архитектуре и технических основах данного продукта.


Так как же он работает? Мы создали собственный поисковый движок с нуля на Rust специально для поиска по коду. Наш поисковый движок называется «Blackbird», но прежде чем я стану описывать как он работает, думаю, что нужно понять наши предпосылки. На первый взгляд, создание поискового движка с нуля выглядит спорно. Зачем это делать? Разве уже нет большого количества существующих решений с открытым исходным кодом?

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

Создание кластера для расчета в OpenFOAM

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

В статье я расскажу, как можно (при необходимости) быстро и дешево собрать кластер Beowulf на основе домашних компьютеров. Выполню я это с помощью компьютеров находящихся в аудитории университета, используя существующую локальную сеть. Используемые программные инструменты: средства численного моделирования механики сплошных сред OpenFOAM, сетевого протокола прикладного уровня SSH и распределенного протокола файловой системы NFS. Все выполнялось под управлением операционной системы ubuntu 20.04.

Читать далее

Пять шаблонов загрузки данных для повышения быстродействия сайтов

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

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

Как мы сделали и оптимизировали механизм правил для персонализации UI

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

Всем привет! Меня зовут Александр, я занимаюсь backend-разработкой в KTS

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

Читать далее

Ruby под нагрузкой, или Как поменять Puma на Falcon за неделю до релиза

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

Всем привет! Меня зовут Александр Шерман, я тимлид в команде CRM в Самокате. Мы в первую очередь известны по своей модели доставки заказов от 15 минут. Чтобы укладываться в такой норматив, у нас достаточно жёсткие SLA (2,5 минуты на сборку заказа), что, в свою очередь, диктует строгие требования к надёжности и быстродействию сервисов.

Часть проектов у нас написана на Ruby. Если раньше в качестве web-сервера для них мы использовали Puma (который уже стал de-facto стандартом) и горя не знали, то в определённый момент нам его производительности стало не хватать. В статье, сделанной по мотивам моего доклада на конференции Ruby Russia 2022 расскажу, как и зачем мы переехали на другой веб-сервер.

Читать далее

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

Представляем specialist — пакет для оптимизаций Python-кода

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

Specialist


Specialist использует высокоточную информацию о местоположении (fine-grained location), чтобы наглядно показать пользователю, где и как новый адаптивный интерпретирующий транслятор (specializing adaptive interpreter) CPython 3.11 оптимизирует ваш код. Подробности об инструменте — к старту курса по Fullstack-разработке на Python.


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

Концепция ландшафта 1С-систем на предприятии

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

При работе с семейством программ 1С возникает потребность упорядочить размещение программных ресурсов и сервисных данных в корпоративном ландшафте.

На представленной визуализации попытка такого упорядочивания по итогам нескольких лет работы на разных проектах. Эта раскладка проистекает из рекомендаций самой 1С, имеющихся на ИТС. Но в оригинале было три зоны, а в представленном размещении практика заставила выделить семь зон.

Цель:

1) Организовать ландшафт 1С не хаотично, а под определённые критерии.

2) Выдать ИТ-службе карту размещения ресурсов, которая:

a. 1Снику обеспечивает систематизацию управления внутри своей «песочницы»;

b. Позволяет ИТ-службе получить свободу в самостоятельном масштабировании и размещении ландшафта 1С.

3) Заменить картой ландшафта (одной картинкой) гору описаний.

Критериями создания зон избраны:

1) Целевое назначение ресурса.

2) Объём (нагрузка) и виды операций.

3) Количество и тип пользователей.

Читать далее

Сага о SEO, часть 3: UX

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

Ранее мы писали о том, каким образом мы оптимизировали сайт more.tv для поисковых систем технологически и семантически. В очередной статье из серии мы обсудим, как влияет пользовательский опыт (UX) и, в первую очередь, быстродействие веб-приложения на эффективность его поискового продвижения.

Читать далее

Защищайся! Простые и не очень правила настройки безопасности для VPS/VDS на Linux

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

Все, что смотрит в бесконечную даль Интернета, находится в той или иной степени под угрозой атаки вездесущими ботами, хакерами, школьниками и прочими темными сущностями глобальной сети. Это не в последнюю очередь касается мощностей арендных серверов (выделенных или VPS/VDS). Провайдер может обеспечивать базовый функционал защиты от атак на свою инфраструктуру, но то, что юзер творит со своей машиной, провайдера абсолютно не касается. Разве что за доп. плату он может добавить некоторые настройки к VPS, мониторить и фильтровать трафик, поступающий с определенной интенсивностью. Поэтому хочешь не хочешь, а приходится задуматься об обеспечении безопасности своего сервиса вот этими вот маленькими ручками, желательно с минимальными временными и материальными издержками.

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

Поехали!

Оптимизация Dockerfile для уменьшения размера и быстрой сборки образов

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

У каждого образа Docker есть свой размер, который он занимает на жёстком диске. Порой бывает так, что контейнер с запущенным приложением на языке программирования Go, который содержит в себе всего лишь одну строчку с выводом фразы «Hello, world!» может занимать сотни Мб, в то время как существуют образы содержащие легковесные ОС весом всего лишь 5 Мб (alpine).

В этой статье будут подробно рассмотрены способы оптимизации файла Dockerfile с целью уменьшения размера готового образа и ускорения его сборки.

Читать далее

Инструменты мониторинга производительности приложений: зачем они нужны и как используются

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

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

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

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

Новые клиенты появляются у нас каждый месяц; приложения становятся всё более и более сложными, усиливается бюрократия, а срочные ситуации, ранее возникавшие раз в месяц, теперь заставляют нас задерживаться на работе ежедневно.

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

За более чем десять лет работы разработчиком ПО я много времени тратил на поиск лучших инструментов для повышения моей продуктивности.
Читать дальше →

Изучите разделение чтения/записи базы данных с помощью браузера

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

В этом туториале вы узнаете, как прокси сервер базы данных MariaDB MaxScale может использоваться в качестве прозрачного разделителя операций чтения/записи для ваших SQL-запросов. Вы настроите репликацию базы данных MariaDB с одним основным и двумя узлами репликами, а также как настроите MaxScale, чтобы скрыть сложность базовой топологии

Самое приятное: вы научитесь всему этом, не выходя из браузера!

Читать далее