Size: a a a

2021 October 12

AK

Alexey Kosenko in rannts
Давайте в лс, чтобы здесь не захламлять беседу
источник

AG

Alexander Gorokhov in rannts
Всмысле не захламлять? Без хлама тут только индукционные плиты и политота останется
источник

AK

Alexey Kosenko in rannts
источник

AK

Alexey Kosenko in rannts
источник
2021 October 13

KK

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

У нас такое происходит почему-то только в кубере. Под докер-композом и докер-сворм ни разу такого не видел.
И даже не знаю пока как понять - что именно в основном процессе может запустить форк. Там из "внешних" процессов запускаются только ffpmeg и gs, сам себя процесс не должен форкать.
источник

KK

Kirill (Cykooz) Kuzm... in rannts
Речь про питонячий процесс.
источник

F

Fred in rannts
У меня есть что то похожее я в селери множу процессы ffmpeg и иногда они как бы убивают я но нет, если смотреть через какой нибудь htop есть процесс но в нем нет самой команды запуска что там запустилось и он не потребляет памяти, но весит пока не убить рабочий ffmpeg
источник

F

Fred in rannts
🤷‍♂ Что с этим делать
источник

F

Fred in rannts
Честно говоря хз как полругом без ffmpeg hls поток поднимать из исходящего потока
источник

KK

Kirill (Cykooz) Kuzm... in rannts
Ну он хотя бы выглядит в htop как ffpmeg? А то у меня он выглядит как мой основной питон-процесс (команду запуска htop показывает точно такую же).
источник

F

Fred in rannts
Ну имя процесса ffmpeg
источник

KK

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

F

Fred in rannts
Возможно но я вроде его правильно закрываю на статус код 0
источник

F

Fred in rannts
Это когда он падеет сам или исходящий поток протух
источник

F

Fred in rannts
Сам popen вроде правильно закрываю
источник

KK

Kirill (Cykooz) Kuzm... in rannts
У меня потеряшки в своё время появлялись, как раз из-за того что основной процесс забывал про них. Не знаю как точно это происходит в питоне. Например случается какое-то исключение, пока ждёшь в process.comunicate() или ещё что-то подобное. Код вылетает выше по стеку, там исключение ловится и про запущенный процесс благополучно забывается. А он ещё какое-то время работает, может даже что-то в stdout пытается выдать. Но т.к. никто этот stdout не вычитывает, то буферы забиваются, и этот дочерний процесс подвисает на попытке записать что-то в stdout - ждёт его освобождения.
источник

F

Fred in rannts
Хм
источник

KK

Kirill (Cykooz) Kuzm... in rannts
А если процесс всё таки завершался, то он становился зомбиком, т.к никто не вычитывал из системы его статус завершения. Но это легко чинится добавлением в контейнер init процесса.
источник

KK

Kirill (Cykooz) Kuzm... in rannts
С появлением asyncio в питоне, стало гораздо приятнее работать с внешними процессами. Не надо запускать дополнительные треды, которые будут пихать поток в stdin и вычитывать результаты из stdout. Гораздо проще это реализуется асинхронными "тасками". Ну и конечно же таймауты тоже можно реализовать без тредов. Красота.
источник

A🌚

Al 🌚l in rannts
Какой кубер? Какой рантайм? Процесс стандалон запускается или под инитом? Какой базовый образ?
источник