Sergey
Кидать запросы на апстримы умеют И Nginx, И HAProxy.
Aleksey
А что перед pm2 не нужен nginx?
Bogdan (SirEdvin)
А список апстримов они откуда возьмут?
Bogdan (SirEdvin)
А что перед pm2 не нужен nginx?
На фронт-сервере по идее нужен, а на самом сервере - нет
Sergey
А список апстримов они откуда возьмут?
Ну да, взять-то негде 😊 Service discovery ещё не придумали. Каково оно, в прошлом?
Евгений
Евгений
Systemd умеет в service discovery?
? Там про nginx уже говорят
Sergei
Systemd умеет в service discovery?
а при чем тут s-d?
Bogdan (SirEdvin)
и возвращаясь к вопросу, где там автоскейл в системд? Форк? Рестарты по количеству запросов
Aleksey
Бгг
Aleksey
Дался вам ещё один апп сервер
Bogdan (SirEdvin)
Или вы предлагаете просто кучу портов раздать на nodejs аппы и веселится так?
Евгений
Вообще можно просто n реплик ноды в k8s-сервис упаковать, ни системд, ни pm2 не нужны
Aleksey
Их надо больше. Пусть и для ноды их будет как у питона
Евгений
Евгений
И вообще
Sergei
Дался вам ещё один апп сервер
а как без них? как ты будешь деплоить без томката?
Sergei
а вот если ты хочешь задеплоить с помощью sftp, вот как ты это сделаешь? а?
Sergei
а если ты хочешь вимом на продакшне поправить код???
Евгений
Уверен, что мейлру позволяет вимом править серверлесс
Sergei
хотя я давно с ними не общался, мб и позволяет, бгг
Евгений
Для их целевой аудитории необходимая фича
Bogdan (SirEdvin)
Дался вам ещё один апп сервер
Меня просто немного бесит пропоганда systemd, systemd-spawn, rsyslog как вещей "из коробки", хотя потом всегда оказывается, что из коробки оно старое, не нужное, не работает и нужно навернуть тонну всего, что бы получить нужный результат. Зато всегда много гонору и троллинга других решений
Sergei
systemd запускает runit, runit -> supervisord, supervisord -> s6, s6 -> uwsgi, uwsgi -> pythonApp ?
Tadeusz
Гг
Sergei
и всё это в докере!
Евгений
systemd > containerd > runc > minit > tool
Евгений
systemd > containerd > runc > minit > tool
Все остальное от лукавого, я считаю
Sergei
systemd > containerd > runc > minit > tool
а где supervisord, runit и uwsgi?
Bogdan (SirEdvin)
а как надо?
Хотя бы исходить из инфраструктуры. У меня вот регистратора, который бы работал сайдкаром для systemd нет. И я уверен, что он мало у кого есть
Sergei
systemd > containerd > runc > minit > tool
это было непросто, найти, что такое minit. этот? https://github.com/mesalock-linux/minit
Bogdan (SirEdvin)
+ мне очень интересно глянуть на рестарты после определенного количества запросов и т.д. через systemd
Евгений
Не знаю какой, там может быть любой любимый апп, который умеет только чистить зомбей
Евгений
Встречал minit когда-то, вот его и вспомнил, ща самописный
Sergei
+ мне очень интересно глянуть на рестарты после определенного количества запросов и т.д. через systemd
мне еще очень интересно как с systemd править код прямо на проде и почему нет деплоя через sftp
Sergei
просто если ваше приложение требует внешнего инициатора рестарта по причинам, которые не краш - то этот рестартер - это часть вашего приложения де-факто.
Bogdan (SirEdvin)
К счастью, в отличии от рестарт костылей без этого можно обойтись
Sergei
К счастью, в отличии от рестарт костылей без этого можно обойтись
без рестарт-костылей тоже можно обойтись. не в случае некоторых ущербных ЯП правда :(
Bogdan (SirEdvin)
Так вроде только раст доказано не течет
Bogdan (SirEdvin)
А все остальные вполне
Sergei
А все остальные вполне
есть пара нюансов ;)
Bogdan (SirEdvin)
А каких же? Имхо, ручное управление памятью еще сложнее, чем со сборщком мусора
Sergei
но так-то по-хорошему артефакт сборки какого-нибудь питона/руби/похапе - это не тарболл с исходниками, а пакет, который снаружи выглядит как процесс, который запустили и работает долго. если эта пхпшечка требует php-fpm, то php-fpm - это часть билда приложения.
Bogdan (SirEdvin)
В целом никак, я просто пытался угадать, про какие нюансы будет идти речь
Sergei
В целом никак, я просто пытался угадать, про какие нюансы будет идти речь
да все просто же. довольно трудно найти, например, приложение на голанге, которое требует рестарта после некоторого числа вопросов. очень легко найти такое приложение на питоне. очень легко найти такое приложение на руби. элементарно найти такое приложение на пхп, но эти вовсе не очень умеют работать достаточно долго без особых костылей. довольно трудно найти такое приложение на C++. некоторые особо ущербные языки делают чрезвычайно сложным написание приложений без внешнего рестартера. но это не норма.
Sergey
В целом никак, я просто пытался угадать, про какие нюансы будет идти речь
Нормально написанное приложение не нужно рестартить через n запросов (внезапно). Его ещё и купить могут за большие деньги.
Sergei
представьте, что у вас БД или nginx требует рестарта после некоторого количества запросов
Sergei
или ядро требует рестарта после запуска некоторого количества процессов
Sergei
Предлагаю зайти в чат про го и спросить про утечки там. Внезапно окажется, что их там легко добится. Опять же, вы не учитываете, что приложений на питоне просто больше
их там легко добиться, но я НИКОГДА не видел приложения на го, штатной процедурой которого является периодический рестарт.
Sergei
если вы придете в гошный продукт с проблемой "память течет", то это будет багом. если вы придете с этим в питон - вам скажут "потюньте ваш гуникорн"
Bogdan (SirEdvin)
Не скажут
Sergei
Вот только бывают периоды, когда надо. Это печально, но что поделать
мм, нет. дождаться oom и рестартнуть силами s-d. превентивно по числу запросов - это так себе идея.
Sergei
Не скажут
ну не скажут так не скажут. /thread
Sergei
только почему-то такие вещи как гуникорн существуют, а апп-серверов для гошки и сишки чет нет
Bogdan (SirEdvin)
Потому что для го это делает оом сам по себе?)
Bogdan (SirEdvin)
Вы же понимаете, что основная причина существования gunicorn и тд.
Bogdan (SirEdvin)
Это gil, а все остальное бонусом?
Sergei
Вы же понимаете, что основная причина существования gunicorn и тд.
основная причина существования таких вещей в том, что существует бездна библиотечного кода, который пророс во всю экосистему, который течет.
Sergei
Это gil, а все остальное бонусом?
нет. я вообще не понимаю как GIL связан с утечками памяти.
Bogdan (SirEdvin)
Примеры будут? Неисправленных утечек памяти, которые долго не фикстятся?
Sergei
вторая причина в том, что охренительное множество приложений по умолчанию всегда запускаются под гуникорном/uwsgi, которые заранее настроили в режиме "убить через N запросов и перезапустить". утечки памяти в конечном приложении в конечной компании можно и вовсе не фиксить, потому что это не даст никакого улучшения примерно нигде.
Sergei
я знаю одну компанию с очень большим приложением на перле, которые полгода командой из шести человек занимались оптимизацией процесса предикта необходимости убийства воркера в uwsgi
D
http://pm2.keymetrics.io/docs/usage/watch-and-restart/
Юзаю этот лаунчер в продакшине для высоконагруженного приложения на go , впринципе он не только для nodejs, подойдёт для запуска любого демона на любом языке . Очень удобный просмотр логов приложения командой типа pm2 logs app_name и куча других фишек аналог supervisor
Sergei
я боюсь представить, что произошло бы с индустрией, если бы более важные вещи (БД, ядра, файлухи, инит-системы и т.п.) разрабатывались подобным путем
Tadeusz
Тебе мало pulseaudio?
Bogdan (SirEdvin)
основная причина существования таких вещей в том, что существует бездна библиотечного кода, который пророс во всю экосистему, который течет.
Ну то есть там всякие wsgi приложения, возможность запускать и скалировать воркеров на одном порту - все фигня. Рестарт - вот что важно
Sergei
Ну то есть там всякие wsgi приложения, возможность запускать и скалировать воркеров на одном порту - все фигня. Рестарт - вот что важно
ну так-то консолидация разных приложений в одной среде - это так себе идея, если начать задумываться %)