Threads, Django и Docker

User avatar
timeau
Уже с Приветом
Posts: 17778
Joined: 15 Aug 2002 00:39
Location: Maryland

Threads, Django и Docker

Post by timeau »

Здорово, отцы!
Попал в засаду, как выбираться - без понятия. Нужна помощь клуба.
Есть хитропоиметое Django приложение, где от Django только healthcheck и есть. Реально это сервис: healthcheck запускает отдельный thread, который слушает Кафку, тянет оттуда, что надо, делает, что требуется и пишет, куда скажут. Все работает на локальной машине под Линухом на пять с плюсом.
Проблема в том, что мы сейчас бегаем вперед хвостом, и deployment производится посредством TeamCity в докерный контейнер. И вот тут собака порылась: thread однозначно живой, подтверждается healthcheck'ом, но не печатает даже первой строчки типа "Я тута!". Такое впечатление, что породиться-то он породился, но его что-то держит и не дает продвинуться ни на один оператор.
Так, на всякий случай: uwsgi запускается с параметром --enable-threads --threads 5. В логах вижу сообщения исключительно от основной программы. И нифига от порожденной нитки. Памяти в докер дал 4 гига, раза в 2 больше, чем надо бы, на всякий случай. CPU=1, хотя и 0.1 было бы достаточно.

P.S. Я знаю про GIL. И да, еще раз: на обычном, не докерном, Linux все летает. И куда податься? Сразу говорю, в докерах не понимаю ни хера.
Не задираться, а то съем!..
User avatar
Komissar
Уже с Приветом
Posts: 65206
Joined: 12 Jul 2002 16:38
Location: г.Москва, ул. Б. Лубянка, д.2

Re: Threads, Django и Docker

Post by Komissar »

timeau wrote: 27 Nov 2019 05:00 Здорово, отцы!
Попал в засаду, как выбираться - без понятия. Нужна помощь клуба.
Есть хитропоиметое Django приложение, где от Django только healthcheck и есть. Реально это сервис: healthcheck запускает отдельный thread, который слушает Кафку, тянет оттуда, что надо, делает, что требуется и пишет, куда скажут. Все работает на локальной машине под Линухом на пять с плюсом.
Проблема в том, что мы сейчас бегаем вперед хвостом, и deployment производится посредством TeamCity в докерный контейнер. И вот тут собака порылась: thread однозначно живой, подтверждается healthcheck'ом, но не печатает даже первой строчки типа "Я тута!". Такое впечатление, что породиться-то он породился, но его что-то держит и не дает продвинуться ни на один оператор.
Так, на всякий случай: uwsgi запускается с параметром --enable-threads --threads 5. В логах вижу сообщения исключительно от основной программы. И нифига от порожденной нитки. Памяти в докер дал 4 гига, раза в 2 больше, чем надо бы, на всякий случай. CPU=1, хотя и 0.1 было бы достаточно.

P.S. Я знаю про GIL. И да, еще раз: на обычном, не докерном, Linux все летает. И куда податься? Сразу говорю, в докерах не понимаю ни хера.
Сабина, перелогинься!

(шучу, не сердись) :mrgreen:
tessob
Уже с Приветом
Posts: 576
Joined: 07 Jan 2016 13:04

Re: Threads, Django и Docker

Post by tessob »

Что за Docker образ вы берете как исходный? Если какой-то микрообраз, то попробуйте во FROM указать убунту и/или дебиан, если заработает, то возможно у вас просто дефолтные библиотеки отвалились.
User avatar
timeau
Уже с Приветом
Posts: 17778
Joined: 15 Aug 2002 00:39
Location: Maryland

Re: Threads, Django и Docker

Post by timeau »

tessob wrote: 27 Nov 2019 07:31 Что за Docker образ вы берете как исходный?
А фиг его знает! :pain1: Есть такой шаловливый народец, devops называется. Раса мелкая и вредная, за очень редкими исключениями. Мы девелопим, а потом рисуем TeamCity pipeline на основании их шаблонов. И все. :pain1: Что за образ, как они его пекут - ХЗ.
Но все равно большое спасибо, поскольку я хотя бы вопросы умные смогу задать. А чтобы правильно задать вопрос, надо знать больше половины ответа...
Не задираться, а то съем!..
User avatar
idle0
Уже с Приветом
Posts: 2846
Joined: 28 Jun 2000 09:01
Location: Milwaukee, WI

Re: Threads, Django и Docker

Post by idle0 »

Может что-то с "ulimit" не так. Количество открытых файлов или user processes.

Спросите у devops про "ulimit"
moria# show running-config
Palych
Уже с Приветом
Posts: 13989
Joined: 16 Jan 2001 10:01

Re: Threads, Django и Docker

Post by Palych »

timeau wrote: 27 Nov 2019 05:00 В логах вижу сообщения исключительно от основной программы. И нифига от порожденной нитки.
В порядке бреда: логи специализированные, создаваемые приложением, или stdout/stderr?
Может ошибка выплевывается куда-то, где ты не смотришь?... stderr, syslog...
uncle_Pasha
Уже с Приветом
Posts: 19939
Joined: 30 Aug 2000 09:01
Location: WA

Re: Threads, Django и Docker

Post by uncle_Pasha »

Palych wrote: 29 Nov 2019 05:55 Может ошибка выплевывается куда-то, где ты не смотришь?...
Да, бывает полезно заглянуть в /dev/null
User avatar
f_evgeny
Уже с Приветом
Posts: 10373
Joined: 12 Apr 2001 09:01
Location: Lithuania/UK

Re: Threads, Django и Docker

Post by f_evgeny »

timeau wrote: 27 Nov 2019 05:00 Проблема в том, что мы сейчас бегаем вперед хвостом, и deployment производится посредством TeamCity в докерный контейнер. И вот тут собака порылась: thread однозначно живой, подтверждается healthcheck'ом, но не печатает даже первой строчки типа "Я тута!". Такое впечатление, что породиться-то он породился, но его что-то держит и не дает продвинуться ни на один оператор.
А если запустить имидж локально, залогинится в него и посмотреть, как оно там работает не пробовали?
Дальше, все будет только хуже. Оптимист.
User avatar
timeau
Уже с Приветом
Posts: 17778
Joined: 15 Aug 2002 00:39
Location: Maryland

Re: Threads, Django и Docker

Post by timeau »

f_evgeny wrote: 01 Dec 2019 15:13А если запустить имидж локально, залогинится в него и посмотреть, как оно там работает не пробовали?
Через honocha и непосредственно uswgi из командной строки? Все летает. Локальный докер не запускал.
Хотя сейчас уже все порешилось, как - не знаю. Видать, уважаемые devops чего-то подкрутили.
Всем спасибо!
Не задираться, а то съем!..

Return to “Вопросы и новости IT”