Size: a a a

2020 July 03

ИК

Иван Кривошеев... in rannts
Kirill (Cykooz) Kuzminykh
Ну вот я в эту сторону и думаю, но если у меня там будут строки в рантайме создаваться, то всё равно они будут новую память "откусывать", а не переиспользовать буфер из пула
Ну обычно создаётся один буфер на весь запрос и потом с ним работают. Что бы каждый создавать новый буфер
источник

ИК

Иван Кривошеев... in rannts
У nginx, в этом плане, хорошая модель
источник

KK

Kirill (Cykooz) Kuzm... in rannts
Ну во всяких C и товарищи с этим проще. А в питоне те же строки имутабельны, и я не могу взять из пула словарик или объект, и присвоить его полю новую строку так, что бы она легла в памяти на место старой.
источник

с

сонная википедия... in rannts
Kirill (Cykooz) Kuzminykh
Ну вот я в эту сторону и думаю, но если у меня там будут строки в рантайме создаваться, то всё равно они будут новую память "откусывать", а не переиспользовать буфер из пула
жесть какая
источник

с

сонная википедия... in rannts
Kirill (Cykooz) Kuzminykh
Ну во всяких C и товарищи с этим проще. А в питоне те же строки имутабельны, и я не могу взять из пула словарик или объект, и присвоить его полю новую строку так, что бы она легла в памяти на место старой.
можно написать обертку над bytearray и сделать билдер
источник

с

сонная википедия... in rannts
поправил
источник

с

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

KK

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

KK

Kirill (Cykooz) Kuzm... in rannts
сонная википедия
а почему бы не написать простенький балансер на Go или Rust?
Ну я про это уже подумал, но пока не так критично, что бы замахиваться на самостоятельную реализацию такой штуки.
источник

KK

Kirill (Cykooz) Kuzm... in rannts
Пока что ещё есть возможности для уменьшения фрагментации памяти.
источник

in

ildar nizamov in rannts
Kirill (Cykooz) Kuzminykh
Пока что ещё есть возможности для уменьшения фрагментации памяти.
взять другой аллокатор?
источник

KK

Kirill (Cykooz) Kuzm... in rannts
уже использую jemalloc и он даже помог сколько смог
источник

KK

Kirill (Cykooz) Kuzm... in rannts
Теперь надо делать следующий шаг
источник

RH

Roman Haritonov in rannts
systemd может по условиям макс памяти перезапускать процесс, а мягкий shutdown существующих коннектов в существующем процессе, чтобы новые обрабатывал новый навернео можно несложно сделать.
вот что сходу попадалось https://vincent.bernat.ch/en/blog/2018-systemd-golang-socket-activation
источник

AS

Artem Savinov in rannts
Roman Haritonov
systemd может по условиям макс памяти перезапускать процесс, а мягкий shutdown существующих коннектов в существующем процессе, чтобы новые обрабатывал новый навернео можно несложно сделать.
вот что сходу попадалось https://vincent.bernat.ch/en/blog/2018-systemd-golang-socket-activation
Systemd хорошо работает внутри podman(сам запускал), с докером там могут быть косяки. Ну и как то это не по докеровски - системд в него совать
источник

RB

Roman Bolkhovitin in rannts
А в чем концептуальное различие между подманом и докером, которое делает системд в подман нормальным явлением, а в докере ненормальным?

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

in

ildar nizamov in rannts
Roman Bolkhovitin
А в чем концептуальное различие между подманом и докером, которое делает системд в подман нормальным явлением, а в докере ненормальным?

Я думал системы инициализации в любых контейнерах это не очень правильно.
навскидку, и systemd и podman - это RH
источник

AS

Artem Savinov in rannts
Подман был вроде как для локалхоста- он бездемоновый(по крайней мере раньше, во второй версии чего наделали - не разбирался)
источник

AS

Artem Savinov in rannts
Зачем systemd в контейнере - кейсы на память не скажу
источник

AS

Artem Savinov in rannts
Просто была необходимость одну самопальную фигню изолировать от основной системы - в итоге просто в подмане стартует tmux  и все что надо в разных окнах.
источник