LINUX.ORG.RU

Монолитный Perl и виртуальные машины по 700 Гб оперативной памяти

 


1

4

Добрый день. Подскажите, пожалуйста, ваши рекомендации (мои аргументы как сеньора девопса уже давно закончились). Заказчик имеет виртуальную машину на 700 ГБ оперативной памяти на ферме собственного железа (Proxmox, конечно же, без кластера), внутри которой находится монолитный Perl в 16000+ потоков/процессов, MySQL, KeyDB, Memcached и еще туда сюда. Стартует это всё около 1 часа. Реализация выполнена полностью руками разрабов из разряда «как смогли, так и сделали, ну оно же работает».

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

Посоветуйте, пожалуйста, что мне сказать заказчику почему у него всё работает не как должно?

Перемещено dataman из development



Последнее исправление: dataman (всего исправлений: 3)
Ответ на: комментарий от sokolaa

50 штук на 20 железных серверах

Не выглядит как монолит. Но детали нам не известны. Почему не переписать одно из приложение, которое завернуто в одну из 50 виртуалок? Оно супербольшое? Суперсложное ? Если да, то что делают остальные 49 шт. ?

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

AoD314
()
Ответ на: комментарий от sokolaa

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

Может быть ты просто неправильно понял свои должностные обязанности?

firkax ★★★★★
()
Ответ на: комментарий от sokolaa

Только это никак не решит то, что это древний монолитный кусок говна ))) С которым текущее руководство не видит проблем.

Оно и не должно видить.
Проблему должны программиисты суметь понять в чём её суть и предложить путь её устранения.

anonymous
()
Ответ на: комментарий от kaldeon

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

для приклада, который тупо берет данные из БД, их как-то перелопачивает и отдает в http, 4Gb на ядро - это уже довольно много, т.е. даже в современных реалиях столько утилизировать памяти - это нужно постараться (какие-то кеши в памяти (судя по всему это не про CGI), сложные отчеты и все в таком духе).

borisych ★★★★★
()
Ответ на: комментарий от firkax

Видимо да. Помимо админ-сетевик-девопс мне еще необходимо стать перл разрабом и порешать все проблемы, накопленного за 10 лет. С оплатой не более 120 к в год. Соглашусь - это моё упущение.

sokolaa
() автор топика
Ответ на: комментарий от Chiffchaff

Вот как отличить первого от второго… Загадка. Эвристики со временем появляются, но они не абсолютно надёжные.

тут или проблемы владельца бизнеса (чтобы распознать пройдох) или исполнителя (чтобы что-то доказать и заработать денег), какого-то общего рецепта здесь, увы, нет.

borisych ★★★★★
()
Ответ на: комментарий от anonymous

Они её не видят и не собираются видеть, закидывая всё ресурсами. Ты думаешь внезапно начнут ?))) Я выше писал, что изложил все дорожные карты по модернизации всей ИТ, а также привлечены внешние аудиторы, которые за деньги приговорили, что труп мёртв и подтвердили всю мою карту на 99%. При этом далее произошло 0 действий по движениям по карте. Я поэтому и интересуюсь, что можно предложить еще.

sokolaa
() автор топика
Ответ на: комментарий от sokolaa

Они её не видят и не собираются видеть

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

закидывая всё ресурсами

Вполне нормальное решение.

При этом далее произошло 0 действий по движениям по карте. Я поэтому и интересуюсь, что можно предложить еще.

Купи попкорн и наслаждайся как все разваливается. При этом можешь говорить: «аяжеговорил!!!»

AoD314
()
Ответ на: комментарий от sokolaa

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

urxvt ★★★★★
()

Если не хватает памяти и железа, запроси у заказчика покупку нового сервера с большим количеством ресурсов. Если подвисает железо или ос - это твоя проблема. Если подвисает монолит - это проблема разработчиков. Аналогично с жалобами на нестабильную работу

cobold ★★★★★
()
Ответ на: комментарий от kaldeon

Я к тому, не является ли выбор ТС-а менять архитектуру более оправданным, чем поиск оптимальной конфигурации?

я по своему опыту могу сказать, что основные проблемы с производительностью (очевидные косяки здесь остаются за скобками) обычно заключаются в следующем:

  • колебания входящего трафика: они могут быть как сезонными, так и зависеть от времени суток, активности бизнеса (дали рекламу - оно вдруг поперло) и пр., тут идея про микросервисы может помочь, но исключительно в плане эластичности, а не производительности, т.е. мы знаем что здесь нужно больше ресурсов, поэтому мы там где тонко наращиваем, а потом снижаем (т.е. либо мы либо экономим на железе изначально, либо мы всегда готовы к скачкам трафика - очень сильно кажется что это совсем не про ТС с его виртуалками по 700Gb - там скорее всего сделан довольно всратый шардинг)
  • перекосы в данных: все люди как люди, а тут кто-то попадается, у которого вместо одной страницы на экране их аж тыща, здесь как дров в топку не подкидывай решить получится только за счет срезания функциональности (ну вот база: есть куча сайтов, где показывается количество страниц и можно в какую-то прыгать, зачем? на нашем любимом сайте в форуме есть навигация только на следующую страницу, в отдельных тредах страницы есть - они уже довольно предсказуемого размера)
borisych ★★★★★
()
Ответ на: комментарий от borisych

Может быть куча различных причин. Например, алгоритмы со сложностью O(n^2). Пока данных и/или пользователей было мало, они отрабатывали за пренебрежимо малое время. Как только пользователей стало больше, задержки начали расти как квадрат от числа пользователей или документов.

Chiffchaff
()
Ответ на: комментарий от urxvt

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

стыдно признаться… но у меня это все скрипт делает…

borisych ★★★★★
()

Посоветуйте, пожалуйста, что мне сказать заказчику почему у него всё работает не как должно?

Профилировать надо. И да, «как должно» это не спецификация.

annulen ★★★★★
()
Ответ на: комментарий от Chiffchaff

Например, алгоритмы со сложностью O(n^2)

по своему опыту: в вебе алгоритмические задачи возникают от силы раз в полгода-год (тут не берем в расчет как бы написать не всратый SQL-запрос - это уже больше техника владения инструментом нежели алгоритмы), микросервисами алгоритмические задачи никак не решаются же: вот, допустим, я выяснил, что у меня в приложении есть модуль, который потребляет кучу ресурсов (как время CPU, так и память), я прикинул и решил его в другое место убрать, вот кажется, что можно трафик более менее контролировать, однако, сколько ресурсов оно жрало изначально, столько и будет, что я после этого должен со своими клиентами делать? отдавать 503 и говорить, что что-то не срослось? Пусть здесь бизнес решает уже, но производительность никакими микросервисами не закрывается.

borisych ★★★★★
()
Ответ на: комментарий от Chiffchaff

Ты компетентен и сможешь распилить этот монолит на микросервисы

Это что, сейчас на любую проблему есть один ответ: «распилить на микросервисы». И это, якобы, обязетельно решит любую проблему какой бы она ни была? Без рассмотрения проблемы глубже и установки причин траблов, так оно и выглядит. А ведь после «распилить на микросервисы» может стать только сильно хуже. Советчики тут набижали.

slew
()
Ответ на: комментарий от slew

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

Зачем приписывать мне чужие слова и спорить с ними?

Chiffchaff
()
Ответ на: комментарий от kaldeon

а какой смысл несут даты и цифры в профиле?

Это я учёт скора вёл. Потом мне это надоело и я засунул его в Графану. Занимался скородрочерством, одним словом. :)

urxvt ★★★★★
()
Ответ на: комментарий от sokolaa

Что такое докер, CI/CD, кубернетикусы какие-то и прочие инструменты без которых не может существовать ниодин нормальный масштабируемый продукт в текущих реалиях современных ИТ

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

slew
()
Ответ на: комментарий от sokolaa

Помимо админ-сетевик-девопс мне еще необходимо стать перл разрабом

Я не знаю чем ты там занимаешься, но решения по поводу архитектуры проекта видимо в твои должностные обязанности не входит. Зато, видимо, входит выявление причин зависаний, например, но этим ты заниматься не хочешь («там 700ГБ памяти и перл» это очевидно не ответ). А чтобы узнать, кто эти зависания будет чинить (совсем не факт что ты) надо сначала узнать отчего они происходят.

firkax ★★★★★
()
Ответ на: комментарий от slew

Что там несовершенного в контейнерных рантаймах? Это стандартная функциональность ядра ещё чёрт знает с каких версий, 2.2 или 2.4, не вспомню уже.

И это не обёртка, а пространство имён.

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

Хотя это полезный и удобный инструмент.

Chiffchaff
()
Ответ на: комментарий от Chiffchaff

потому что они картреджечисты. они такие же админы как и перл-погромисты… да и вообще какое-то гонево. как можно даже программистом быть, не зная про docker, а тем более админом (программист обычно умеет все, что умеет сисадмин, но ему не интересна эта рутина)

rtxtxtrx ★★★
()

Много слов, но так и не понятно - что именно тормозит? Где мониторинг mysql, Memcached и прочего? Или perl это плохо и лапки к верху?

Очень понимаю мужиков у которых есть +- работающая штука, а приходит не понятный студент и пассами в воздухе предлагает «всё переписать». Ты вообще в курсах сколько стоит такое переписать, перевнедрить и переобучить? Добавить железа на пару порядков дешевле. В общем переставай скулить и начинай работать - нужны мониторинги, нужны запросы разрабам на внутренние средства мониторинга данного продукта, включай логирование и профилирование и изучай логи, смотри почему долго стартует и т.п. В общем думай и работай, а жаловаться и болтать - «нужно всё переписать на микросервисы», нужно в последнюю очередь.

vtVitus ★★★★★
()
Последнее исправление: vtVitus (всего исправлений: 1)
Ответ на: комментарий от rtxtxtrx

10 лет назад ко мне пришли и попросили посмотреть систему на одном западном фреймворке, которая адски тормозила падала и всё такое. И попросили дать совет. Я посмотрел и дал, советы были очевидны (индексы + использование определённых фишек фрейворка + обход известных багов фреймворка). Всё это было проделано и работать стало значительно лучше. Работ было на пару дней. Каково же было моё удивление, когда я узнал, что пара других контор их кормили рекомендациями - «нужно всё переписать», «нужно переходить на новую версию», «нужно менять mssql на оракл» и т.п.

В данном случае, возможно, нужно просто внедрить «архив» или какой-то его аналог и убрать не нужные, не актуальные документы/объекты системы или что-то похожее.

vtVitus ★★★★★
()
Ответ на: комментарий от rtxtxtrx

Особенно меня забавляют клоуны, которые ничего не знают о продукте, но уже знают, что «на архитектуру насрали», сразу видно матёрых архитекторов, за плечами которых … ничего.

vtVitus ★★★★★
()
Ответ на: комментарий от rtxtxtrx

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

vtVitus ★★★★★
()
Последнее исправление: vtVitus (всего исправлений: 1)

Монолитный Perl и виртуальные машины по 700 Гб оперативной памяти

Перефразирую Анатолия Папанова.

Шоб у тебя было двадцать виртуальных машин с одним терабайтом памяти и на них работал Perl.

anonymous
()
Ответ на: комментарий от sokolaa

А ты можешь объяснить нафейхоа хочешь на микросервисы попилить? Только не таким образом, что это все отстало на 15 лет, а конкретно какие именно проблемы они должны в данном конкретном случае решить? В чем вообще проблемы? Система подвисает, а из-за чего, ресурсов не хватает (каких?) или код багованный?

anonymous
()
Ответ на: комментарий от sokolaa

Помимо админ-сетевик-девопс мне еще необходимо стать перл разрабом и порешать все проблемы, накопленного за 10 лет. С оплатой не более 120 к в год.

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

annulen ★★★★★
()
Ответ на: комментарий от Chiffchaff

Поэтому лучше не идти работать в не-IT конторы. Там просто глухо. «Программировай! Солдат должен программировать от забора до обеда!»

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

anonymous
()
Ответ на: комментарий от Chiffchaff

Там уже добавлено железа на 700 Гб RAM. Страшно представить, сколько ещё придётся добавить.

Сервак или рабочая станция на пару ТБ RAM - это не что-то невероятное.

anonymous
()