Size: a a a

2020 July 03

💭П

💭 Руслан Прохоров... in rannts
Keni
Только начал изучать. Раньше с программированием не сталкивался
Тогда хз, интернатуры или если  напрячься и на джуна.
источник

KK

Kirill (Cykooz) Kuzm... in rannts
Нужна "штука", которая может показать распределение занятой питоном памяти по страницам. Хочется визуально увидеть подтверждение догадки, что большое потребление памяти - это результат фрагментации памяти. Обычные профилировщики памяти обычно показывать просто список разных типов объектов с их количеством и размером. Это не подходит, т.к. в сумме оно всё показывает в разы (и даже в десятки) меньше занятой памяти, чем есть на самом деле.
Кто-нибудь видел такое?
источник

KK

Kirill (Cykooz) Kuzm... in rannts
Вторая хотелка - приложение, которое:
- может запускать другой процесс,
- прозрачно проксировать в него запросы (HTTP),
- следить за потребление памяти процессом,
- в случае превышения порога занимаемой памяти должно запустить вторую копию процесса и все новые запросы отправлять в него,
- убить старый процесс после того как он завершит обработку всех своих запросов.

Есть такое или у меня идея для "стартапа"?
источник

KK

Kirill (Cykooz) Kuzm... in rannts
systemd случайно не умеет такое? 😊
источник

KK

Kirill (Cykooz) Kuzm... in rannts
uwsgi не подходит, у меня приложение на aiohttp
источник

S

Serg in rannts
Kirill (Cykooz) Kuzminykh
Нужна "штука", которая может показать распределение занятой питоном памяти по страницам. Хочется визуально увидеть подтверждение догадки, что большое потребление памяти - это результат фрагментации памяти. Обычные профилировщики памяти обычно показывать просто список разных типов объектов с их количеством и размером. Это не подходит, т.к. в сумме оно всё показывает в разы (и даже в десятки) меньше занятой памяти, чем есть на самом деле.
Кто-нибудь видел такое?
я бы тоже на такое посмотрел 😍
источник

KK

Kirill (Cykooz) Kuzm... in rannts
Знаю что "поднять новую копию - перевести запросы - убить старую копию" умеют всякие большие оркестраторы контейнеров при выкатке обновлений. Но для меня это какой-то оверхед.
источник

RB

Roman Bolkhovitin in rannts
Из очень отдаленно похожего gunicorn + крутилка --max-requests.
источник

RH

Roman Haritonov in rannts
Kirill (Cykooz) Kuzminykh
systemd случайно не умеет такое? 😊
В нем есть socket activation, возможно с помощью нее можно что-то такое сделать
источник

SA

Sergey Arkhipov in rannts
Uvicorn тоже умеет убивать после определенного количества запросов
источник

AS

Artem Savinov in rannts
Roman Haritonov
В нем есть socket activation, возможно с помощью нее можно что-то такое сделать
как понимаю- это просто запуск чего либо при обращении к сокету- мне кажется все таки это не то
источник

A🌚

Al 🌚l in rannts
Kirill (Cykooz) Kuzminykh
Знаю что "поднять новую копию - перевести запросы - убить старую копию" умеют всякие большие оркестраторы контейнеров при выкатке обновлений. Но для меня это какой-то оверхед.
Можно докером обойтись, в один контейнер балансер засунуть, в другой - скрипт или бинарь, который будет триггерить другие контейнеры и следить за ними. Несложно напилить, если не найдется готового решения
источник

KK

Kirill (Cykooz) Kuzm... in rannts
А как сказать балансеру, что он должен новые запросы слать в новый контейнер, но не обрывать имеющиеся запросы к старому? И потом ещё как-то определить, что все запросы к старому закончились, что бы удалить его?
источник

KK

Kirill (Cykooz) Kuzm... in rannts
Видимо надо балансер с API, и какой-то не очень банальный скрипт, который будет через API балансера всё это делать
источник

KK

Kirill (Cykooz) Kuzm... in rannts
Хотелось бы найти такой готовый скрипт
источник

A🌚

Al 🌚l in rannts
Kirill (Cykooz) Kuzminykh
Видимо надо балансер с API, и какой-то не очень банальный скрипт, который будет через API балансера всё это делать
envoy например
источник

SA

Sergey Arkhipov in rannts
Kirill (Cykooz) Kuzminykh
А как сказать балансеру, что он должен новые запросы слать в новый контейнер, но не обрывать имеющиеся запросы к старому? И потом ещё как-то определить, что все запросы к старому закончились, что бы удалить его?
Для этого есть всякие healthcheck или readiness check (из Кубернетеса). У нас такое напилено на haproxy там, где нет Кубернетеса
источник

KK

Kirill (Cykooz) Kuzm... in rannts
haproxy можно научить проверять объём памяти занимаемой процессом в другом контейнере?
источник

KK

Kirill (Cykooz) Kuzm... in rannts
Или надо что бы сам процесс фейлил хелф-чек запрос, если занимает много памяти?
источник

A🌚

Al 🌚l in rannts
Haproxy поддерживает луа скрипты, можно научить
источник