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

Оптимизация инфраструктуры: снижаем счет за ресурсы без ущерба для бизнеса

Время на прочтение8 мин
Количество просмотров4.5K
Всего голосов 35: ↑33 и ↓2+31
Комментарии8

Комментарии 8

Selectel, а расскажите, как так получилось, что ВСЕ ваши IP-адреса (ASN 49505) находятся в чёрном списке UCEPROTECT-Level3 www.uceprotect.net/en/rblcheck.php?asn=49505 ? А большинство адресов - ещё и в других списках.

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

Если заказывать прокси на сайте https://proxyline.net/ то в 80% случаев это прокси, которые расположены на сервере компании Selectel. Так можно и в черный список РКН попасть легко.

Добрый день! На данный момент нас заделистили в UCEPROTECT на Level3 — мы в зеленом списке. Ранее мы действительно могли быть в черном списке, поскольку борьба со спамом, исходящим из нашей сети, не была проактивной. Мы ограничивали айпишникам 25 порт наружу только после их попадания в спам-листы, когда анализировали публичные листы постфактум.

С 1 апреля команда облачной платформы и NetOps Selectel реализовали систему проактивной борьбы со спамом. Мы сразу анализируем активность по 25 порту наружу от наших клиентов и блокируем возможность рассылать почту тем, у кого трафик превышает установленный порог, а скоринг (оценка доверия пользователю по ряду параметров) далек от идеала. Попадание айпишников в спам-листы — частая проблема провайдеров, мы стараемся максимально предупредить этот процесс. Например, в облаке у нас есть такой антиспам-сервис: https://habr.com/ru/company/selectel/blog/557400/.

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

Зачем обманывать-то? Всё легко проверяется: сети как были в blacklist'е, так и остались https://www.uceprotect.net/en/rblcheck.php?asn=49505 и https://www.uceprotect.net/en/rblcheck.php?asn=50340

Тикет про производительность ФХ 3208589

Ещё одна проблема обнаружилась недавно: бэкапы делаются в рандомные 8 часов вместо времени, указанного в настройках. По сути, такие бэкапы бесполезны. Тикет 3255196

И самое главное: найдите людей, которые способны в анализ и оптимизацию на алгоритмическом уровне.

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

За несколько лет опытной командой разработки было сделано несколько попыток его оптимизации. Ни к чему не пришли, потому что запрос максимально оптимален в классическом понимании. Как показала практика, так оно и есть.

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

День ушел на анализ запроса. Все индексы есть, путь с индексами тупиковый, отбрасываем.

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

Кешировать запрос нельзя: остатки зависят от условий, а условия от остатков, плюс сортировка - запрос имеет смысл только целиком.

Полный тупик, понятно почему от решения отказывались несколько лет: его реально нет.

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

Через несколько дней фоновых размышлений нащупан вариант: что если отделить тяжелый запрос от легкого? Это лишает смысла результат, но решает основную часть проблемы: время. Решение очевидное, но из-за фокусировки на запросе приходит не сразу. Решение бесполезное: без учета остатков смысла в запросе нет. Но обретает смысл, добавив опыт и экспертизу: да, отдельные запросы сами по себе бессмысленны, но переводят проблему в другую плоскость - теперь у нас два запроса с разными свойствами, и по отдельности они отлично кешируются. Чтобы получить результат достаточно найти общие элементы двух множеств, а это элементарно. Бонусом возможность задавать любые условия: условия дешевые по времени, а тяжелые остатки повторно запрашивать больше не нужно.

Результат: 6с->2c. Уже неплохо, но хотелось бы хотя бы 0.6-0.8с, чтобы покупатель гарантированно дождался результата.

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

Результат: 0.6с, это отличный результат, задача решена.

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

Во-первых из-за особенностей каталога можно хранить только 10% остатков без потери функционала, что уменьшит и ускорит кеш. Чей бы и нет? Делаем.

Результат: 0.2с, это уже шикарный результат.

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

Результат: 0.07с, без комментариев, это уже далеко за пределами желаемого.

Итог: на входе долгий запрос, целых 6 секунд, многолетний ущерб продажам, фактически нерешаемая классическими способами проблема. На выходе 0.07 секунды. Цена вопроса - несколько дней работы одного подходящего человека. Человека, которому интересно щелкать нерешаемые проблемы и погружаться в систему глубже, чем это обычно делает рядовой разработчик. Человека, который набрал опыт и экспертизу конкретно на сложных и непонятных случаях.

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

Да, хороший специалист – DBA или DevOps – это тоже очень важно. Именно в людей стоит инвестировать — на выходе получишь в разы больше)

Увидел название статьи и поспешил открыть, с надеждой почерпнуть что-то новое. Увы :)

Все-таки "инфраструктура" и "арендуемая виртуальная инфраструктура" - разные вещи. Я как ответственный за функционирование ЦОД был вынужден решать вопросы начиная от потребления электроэнергии (вычисление простаивающего оборудования, обесточивание, консолидация ресурсов в стойках/серверах/облачной инфраструктуре) и обеспечении охлаждения (btu, n+1, фильтра, фреон, обслуживание), ИТ-инфраструктуры (сервера, дисковые массивы, ленточные библиотеки и (внезапно!) сами ленточки, SAN-коммутаторы, роутеры-маршрутизаторы-коммутаторы, оптические каналы, DWDM) до лицензий (ОС, БД (внезапно в некоторых сценариях Postgres дороже чем Oracle), системы резервирования, виртуализация, смартнеты и т.д. и т.п.), необходимых для функционирования ЦОД.

А ведь есть еще и резервные мощности - резервные вводы, ДГУ, АВР, системы питания и их АКБ... Регламентные процедуры, запуск ДГУ без нагрузки и под нагрузкой, обслуживание каждые 100 моточасов, замеры емкости АКБ раз в неделю, вычисление АКБ с битыми банками и их замена...

А ЦОД-ов еще и не один а куча, плюс еще удаленные для обеспечения geo redundancy...

Квоты на ресурсы, говорите? Трафик между услугами? Плавающие IP-адреса?

Да, в данном тексте именно арендуемая инфраструктура имеется в виду. Но, может, и про инфраструктуру ЦОДов мы тоже когда-нибудь напишем.

Зарегистрируйтесь на Хабре, чтобы оставить комментарий