LINUX.ORG.RU

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

 


1

4

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

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

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

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



Последнее исправление: dataman (всего исправлений: 3)

Там нет цели сказать. Ему не интересно почему. Он же не собирается это переделывать, зачем ему знать что и почему. Ему надо чтобы было не сказано, а сделано - чтобы починились указанные проблемы. Как угодно, его не волнует как (это будет волновать тех, кто придёт после тебя). Переписывай на C++20 в общем.

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

А, ну да, что делать дальше - надо наверное под нагрузкой посмотреть какой процесс жрёт больше всего и его посмотреть/переделать.

Р - Работа. Ф - Финансовость. В - Выгодность!

lesopilorama
()
Последнее исправление: lesopilorama (всего исправлений: 6)

Не зная какая задача с какой нагрузкой решается ничего нельзя сказать. Названия программ ещё не означают, что можно. А главное даже если жуткое блотваре, заказчику может быть дешевле и быстрее памяти до полутора терабайт добить (если поможет), чем все «по уму» делать.

anonymous
()

У тебя базовая проблема любого технаря - коммуникация с бизнесом. С бизнесом надо разговаривать на языке бизнеса, не надо говорить про архитектуру и пр., говори про профит для него.

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

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

hippi90 ★★★★★
()

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

Умели же раньше делать!

MoldAndLimeHoney ★★
()

Если это не работа, а шабашка, я бы просто забил, и поискал другого заказчика.

Если вариантов нет (это full time работа, другой скоро не предвидится, дома жена и дети и ипотека), то сочувствую. Изучай медитацию, побочные эффекты антидепрессантов.

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

Знаю похожий проект, не хочу писать всю историю. Там заказчик облил меня говном, потребовал вернуть 50% денег за работу (пришлось вернуть), и пошёл искать дальше на рынке.

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

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

Chiffchaff
()

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

В чём вопрос-то? Так не должно, а как должно?

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

OSBuster
()
Последнее исправление: OSBuster (всего исправлений: 2)
Ответ на: комментарий от hippi90

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

Проблема в том, что переписать кучу говна:

  1. Всегда требует минимум пары лет, даже если кучка маленькая
  2. Не гарантирует появления новой кучи говна (особенно, учитывая, что он в первый раз явно экономил на квалификации сотрудников, и во второй раз будет)
  3. Не гарантирован успех вообще (видел не один проект, который пытались переписать с нуля, и не преуспели, несмотря на все усилия и грамотных людей)
  4. Просто даже прикинуть время и затраты - сложно до невозможности. Точность попадания в сроки будет плюс-минус пара лет. А работать бизнесу надо сейчас.
Chiffchaff
()
Ответ на: комментарий от Chiffchaff

Ну ты всё правильно говоришь, поэтому переписывать кучу говна обычно никто не хочет. Поэтому и кобол до сих в проде и пр.

Просто даже прикинуть время и затраты - сложно до невозможности.

Нет, это тоже навык и компетенция, просто скорее всего у топикстартера их нет. Это в норме уровень техдира, но что-то мне кажется его в этой фирме вообще нет.

hippi90 ★★★★★
()

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

Если у него нет средств на переписывание, то либо увольняйся, либо переписывай это сам на добровольных и безвозмезных началах или договаривайся, предоставив подробный план, метрики, прогнозы. Вообще непонятный плач Ярославны. Кто-то что-то сделал плохо, о ужас, никогда такого не было.

OSBuster
()

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

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

Что ты такой скучный? Лучше организовать переход на новую версию перла (даже если она обратно-совместимая, ну там 5.24 -> 5.28), сопроводив это кучей дорогих мероприятий.

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

Я пробовал это Г докеризировать и разбить на микросервисы. Только столкнулся с тем, что разрабы прибили гвоздями пути самого софта и библиотек по хардкоду в десятках тысяч строк этого чуда. Поэтому просто взять и сложить это в контейнеры не выходит. Оно тупо не стартут и не видит либы. Куда бы ты их не ставил. Существует и масса иных сложностей с подачей енвов например.

На запросы «чо делать» получаю только «нам некогда, всё потом». Девопс работает всегда в паре с разрабом. И перекрывает свои слои. Я не могу перекрыть этот 10-ти летний легаси.

Дорожная карта нарисована. Даже привлекли внешних спецов, которые всё плюсанули каждую мою бкву. Толку от этого не прибавилось. Как и ранее мне полощат голову, что это всё падает и сыпется ежедневно. При этом не делается вообще ничего, что касается качества и модернизации. И люди не понимают, что они отстали на 10-15 лет от прогресса. Слово докер для них это фантастика. Если бы всё было гладко - я бы не пришёл.

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

Поэтому просто взять и сложить это в контейнеры не выходит. Оно тупо не стартут и не видит либы. Куда бы ты их не ставил. Существует и масса иных сложностей с подачей енвов например.

Вот тут крайне одобряю разрабов. Превентивно ввели в своё поделие антидот.

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

Сильно сочувствую. Сам бывал не один раз в такой ситуации.

Практически каждый раз, я сдавался в итоге.

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

Chiffchaff
()

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

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

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

dicos ★★
()

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

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

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

Смотря что это в итоге за сервис. Если это форум на 10 человек это одно, а если это штука на миллион реально нужных rps, то это другое.

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

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

Оно всегда именно так и происходит. Но не всегда можно что-то с этим сделать без переписывания алгоритма или перехода на другую СУБД.

Из маленького примера: у меня в проекте был оверрайд для GeoIP: можно было добавлять в БД свои адреса и сети, и задавать для них другую страну (для поддержки новых территорий, и прочих мест, которых в базе geoip не будет).

Пока оверрайдов было мало, всё работало хорошо. Как только оверрайдов стало больше, MySQL стала захлебываться, ибо в ней нет нормальных типов для ip адресов и ip сетей, быстрый поиск возможен только через очень ограниченные хаки.

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

И таких примеров у меня много, просто этот один из недавних, и довольно понятный.

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

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

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

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

Скорее всего ты прав, что легче послать это всё, чем ежедневно доказывать своё не бабуинство.

Заказчик, даже не понимает, что он живёт 10-ти летней давностью. Причем у него таких виртуалок подобных около 20-ти штук, которые еще и объединены между собой каким-то тупым свитчом Dlink (мирно валяющимся в стойке) вторыми интерфейсами на железных Proxmox. С ежедневной просадкой сети.

Также он планирует активно клонировать это всё, о чем я ему сказал сразу, что это невозможно держать в таком виде. Надо хотя бы провести докеризацию и раздробить даже тот же древний перл. Но у него просто неквалифицировнные сисодмины по всем фронтам. А ну еще это всё находится в датацентре где платят 5000 за юнит (представляете качество услуг?), хотя в том же селектеле 15000 берут за расположения железа.

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

Что за вера в святой Докер. Типа, если взять кусок дерьма, засунуть в Докер то оно станет пахнуть? Что изменится то? Кроме того, что поддерживать станет еще сложней, так как добавится еще один уровень/инструмент/слой.

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

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

А может он и прав в этом аспекте? Монолитный 700GB-RAM перл я конечно осуждаю, но это не значит что заказчик везде не прав. Сисадмины у него (включая тебя) и правда могут быть неквалифицированными, особенно учитывая что он склонен урезать оплату.

firkax ★★★★★
()

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

«Уважаемый Заказчик, ты тратишь на проект мало денег. Много хорошо за мало денег не бывает. Хочешь лучше - трать больше. Тут главное что? Знать на что потратить. Если ты уже знаешь на что - трать, мы возьмем под козырек и прикрутим. Если не знаешь - заказывай экспертизу, экспертиза расскажет. Не хочешь тратить на экспертизу - раскидывай бабосы в любом произвольно взятом направлении случайным образом. Кстати, не забудь добросить часть денег и до моего кармана.»

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

Например, скорее всего, оно жёстко прибито гвоздями к куче мест: конкретному дистрибутиву, конкретному составу дистрибутива, конкретным настройкам машины.

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

Докер хотя бы немного всё это стандартизует, упростит разработку и развертывание.

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

Поменять иногда можно. Но в мелких деталях, и денно и нощно ноя годами.

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

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

Да, куски дерьма в докере великолепно живут, масштабируются и распространяются по CI/CD. Поддерживать и работать с этим в разы проще чем текущее монолитное сокровище. Слоёв за исключением правил Iptables/IPVS не добавится.

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

Внешние эксперты уже были ))) Подтвердили 99% сказанного мною. Действий у заказчика после этого не последовало ))) Видимо и там некволифецированные сисодмины. Нужны другие )

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

Например, скорее всего, оно жёстко прибито гвоздями к куче мест: конкретному дистрибутиву, конкретному составу дистрибутива, конкретным настройкам машины.

Почти всегда всё прибито. Станет прибито к определенному образу Докера. В чём фундаментальная разница?

Докер хотя бы немного всё это стандартизует, упростит разработку и развертывание.

Допустим. Но я не вижу чем оно поможет в текущей ситуации: станет стабильней работать? Жрать меньше памяти?

Так проблема же в том, что оно падает.

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

Почти всегда всё прибито. Станет прибито к определенному образу Докера. В чём фундаментальная разница?

В том, что можно будет запустить одной командой где угодно. Даже на Windows.

Допустим. Но я не вижу чем оно поможет в текущей ситуации: станет стабильней работать? Жрать меньше памяти?

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

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

Например, оно написано под перл 5.6.24 (пример), которого уже давно нет в монолите, либо надо проковыряться неделю, чтобы забить его молотком в современную систему. Докер же это решает одной строчкой

FROM perl:5.6.24

в котором у тебя уже находится всё необходимое и изолированное от хост системы. Причем даже сюда можно поставить пакеты из legacy наборов репозиториев.

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

В текущей ситуации мне интересно мнение экспертов, чем можно еще оперировать. Я указал, что все известные аргументы мной уже использованы.

sokolaa
() автор топика

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

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

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

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

чем можно еще оперировать

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

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

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

Потому что проблема явно не техническая, а организационная.

Заказчик туп как дерево (по крайней мере, в технических вопросах), и нужен кто-то, кто может на его языке донести ему простую мысль «кроилово ведёт к попадалову».

С точки зрения технических подробностей здесь уже нечего обсуждать.

Chiffchaff
()

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

с клиентом надо работать в рамках той реальности, в которую он верит.

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

покупаешь, апгрейдишь.
кто молодец? ты молодец.

если денег на апгрейд нет - нестабильно и плохо работает потому что нет денег.
кто виноват? не будем тыкать пальцами.

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

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

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

goingUp ★★★★★
()
  1. Стабилизируй текущую ситуацию, на технологиях которые есть сейчас
  2. Обозначь список узких мест текущей инфраструктуры, план по их решению, сроки
  3. Постепенно меняй подходы в команде, проталкивай технологии, повышай уровень и качество

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

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

Вот проблема то заключается в том, что тут имеется и СТО уже с десяток лет, и свои устоявшиеся специалисты ))) Которые не понимают и не хотят понимать, зачем что-то менять, когда итак работает. Что такое докер, CI/CD, кубернетикусы какие-то и прочие инструменты без которых не может существовать ниодин нормальный масштабируемый продукт в текущих реалиях современных ИТ.

Но при этом постоянно приходят ко мне же с проблемами почему их 700-та гиговые виртуалки тупят и падают. Тут даже мониторинг вот этот https://collectd.org/ (с последним релизом 6 лет назад) и nagios от 2018-го года ))

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

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

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

Я сам для себя ещё не нашёл ответ на этот вопрос.

С одной стороны, я сам периодически вижу закоснелых людей, которые не хотят учиться ничему новому, поэтому с порога его отвергают как «ненужное усложнение».

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

С третьей стороны, я вот тоже иногда подсознательно противлюсь новому. Потому что уже давно не 20 лет, нет ни времени, ни сил, постоянно изучать новое.

Допустим, докеру я когда-то почти так же сопротивлялся, как «эксперты» в треде. «Лишняя прослойка», «нафиг не нужно». Только у меня этот этап прошел лет 8-9 назад.

Смог понять в чём цимес, только когда распробовал, и распробовал уже на продвинутом уровне.

Короче, сложно это всё. Иногда хочется заняться пчеловодством, или разводить уток.

Chiffchaff
()