Size: a a a

2019 November 18

AY

Andrey Yurevich in DevOps
что тоже не приятно
источник

M

Mentat in DevOps
В конкретно твоем случае проще дать +500 метров памяти в лимиты контейнеру. Либо если он тебе настолько дорог - дай ему безлимит памяти на тачке. В целом - наверняка есть какой-то хак, чтобы отрубить oom-killer на контейнер - но я сомневаюсь что после его применения хоть что-то будет работать нормально
источник

N

Navern in DevOps
насколько я помню
источник

N

Navern in DevOps
Mentat
В конкретно твоем случае проще дать +500 метров памяти в лимиты контейнеру. Либо если он тебе настолько дорог - дай ему безлимит памяти на тачке. В целом - наверняка есть какой-то хак, чтобы отрубить oom-killer на контейнер - но я сомневаюсь что после его применения хоть что-то будет работать нормально
по дефолту же ограничений нет
источник

M

Mentat in DevOps
Navern
по дефолту же ограничений нет
по дефолту да, но видимо человек уже крутанул лимиты
источник

AY

Andrey Yurevich in DevOps
Ну ограничений нет, но что бы рационально распределить ресурсы и настроить скейлинг нужно задать правильные реквесты и лимиты
источник

AY

Andrey Yurevich in DevOps
а oom это как выстрел в колено
источник

N

Navern in DevOps
а чего ты ожидаешь?
источник

N

Navern in DevOps
чот я не оч понял
источник

M

Mentat in DevOps
Одна из оперативных задач в куберах, да. Выставить лимиты, отмониторить соответветствие, где надо поднять - где надо убавить. По идее решается на стадии стейджинга/нагрузочного. Либо просто пихаем-падает-поднимаем, итеративно. Для приложений со стейтом это боль конечно, но тут ничего не поделаешь разумного.
источник

GG

George Gaál in DevOps
Mentat
Одна из оперативных задач в куберах, да. Выставить лимиты, отмониторить соответветствие, где надо поднять - где надо убавить. По идее решается на стадии стейджинга/нагрузочного. Либо просто пихаем-падает-поднимаем, итеративно. Для приложений со стейтом это боль конечно, но тут ничего не поделаешь разумного.
+
источник

C

Combot in DevOps
George Gaál (3.98) увеличил репутацию Mentat (1.04) (+1.04)
источник

A

Alexander in DevOps
Andrey Yurevich
по cpu он вроде evicted делает
Не знаю, что имеется в виду под evicted, но при выжирании бюджета по cpu time за период cgroup-а просто не получает время ЦП до наступления следующего периода учета.
источник

GG

George Gaál in DevOps
Alexander
Не знаю, что имеется в виду под evicted, но при выжирании бюджета по cpu time за период cgroup-а просто не получает время ЦП до наступления следующего периода учета.
+
источник

C

Combot in DevOps
George Gaál (3.98) увеличил репутацию Alexander (5.01) (+1)
источник

GG

George Gaál in DevOps
да, тупо ждем
источник

A

Alexander in DevOps
Andrey Yurevich
Например я дал монге 500 милиядер, она начала кушать 501 и кубер убил монгу. Можно как-то ограниичть ресурсы, а не убивать?
OOM сделан не потому что это красиво, а потому что подавляющее большинство софта не умеет обрабатывать ошибки аллокации памяти и, вообще, не работает без memory overcommitment-а.
Соответственно, софт при нехватке памяти перейдет в невалидное состояние в любом случае: либо он не обработает ошибку malloc-а с возможностью продолжения работы (это уже 99% софта), либо из-за включенного по-дефолту оверкоммитмента память закончится не при malloc-е, а при попытке использовать уже выделенный malloc-ом регион памяти (что не может обработать 100%, т.к. там даже код ошибки негде вернуть).
источник

A

Alexander in DevOps
Потому пристрелить OOM-ом загнанный процесс — самый милосердный вариант и с точки зрения потребления ресурсов, и с точки зрения сохранности данных.
источник

GG

George Gaál in DevOps
не факт
источник

AY

Andrey Yurevich in DevOps
Alexander
OOM сделан не потому что это красиво, а потому что подавляющее большинство софта не умеет обрабатывать ошибки аллокации памяти и, вообще, не работает без memory overcommitment-а.
Соответственно, софт при нехватке памяти перейдет в невалидное состояние в любом случае: либо он не обработает ошибку malloc-а с возможностью продолжения работы (это уже 99% софта), либо из-за включенного по-дефолту оверкоммитмента память закончится не при malloc-е, а при попытке использовать уже выделенный malloc-ом регион памяти (что не может обработать 100%, т.к. там даже код ошибки негде вернуть).
+
источник