George
29.07.2019
09:09:59
Maksim
29.07.2019
09:10:40
задачи нет, суть в том что у меня мой docker-compose стоит из двух контейнеров
как сервисы я их назвал
frontend
backend
и даже когда я их стопаю docker stop CONTAINER_ID они стопаются очень долго
George
29.07.2019
09:11:02
https://blog.container-solutions.com/running-docker-containers-with-systemd
This setup works pretty well most of the time. But there is a major problem. systemd isn't monitoring the container itself, it's really monitoring the client. If the client detaches from the container for whatever reason (e.g. a network problem), systemd will kill the container, even though it may be functioning fine. Conversely, if the container dies but the client remains running, systemd won't do anything. What we really want is for systemd to monitor the container instead of the client1. And there is a solution that does just that, systemd-docker.
Google
Алексей
29.07.2019
09:11:13
George
29.07.2019
09:11:13
О_о. Я примерно про это и говорю
а потом через 10 секунд приходит докер и насильно его убивает
читай про сигналы
Maksim
29.07.2019
09:12:19
Алексей
29.07.2019
09:12:37
ну или если тебе надо быстро стопаться используй docker kill
но повторюсь есть ощущение что ты не уловил суть пока.
и получил забавную зверушку
Maksim
29.07.2019
09:13:24
да вот docker kill отрабатывает не быстрее
Алексей
29.07.2019
09:13:45
откуда требования по скорости docker kill ?
Maksim
29.07.2019
09:14:57
kill -9 должен отрабатывать быстрее чем рестарт сервиса, если конечно docker kill делает подобное
Google
Алексей
29.07.2019
09:15:56
он делает нечто похожее. но ладно я понял. расскажешь чем кончилось и каковы бенчмарки по убийству контейнеров
Maksim
29.07.2019
09:17:23
да мне бенчмарки тут не важны, если я буду уверен контейнеры перезапустят и всё поедет, то проблем нет, у меня отваливается по TIMEOUT
можно увеличить
но как то очень долго всё это
Алексей
29.07.2019
09:17:58
? рад что работает всё.
Andrey
29.07.2019
09:18:50
может для начала посмотреть откуда таймаут, по идеи то его там как бы не очень должно быть
Maksim
29.07.2019
09:19:38
посмотрю на свой entrypoint, может он и в правду кривоват
ну вот не самый страшный entrypoint
#!/bin/sh
if [ -z $TEMPLATE_DIR ]
then
TEMPLATE_DIR="/var/www/html"
fi
for inputfile in $(find $TEMPLATE_DIR -type f -iname "*.tpl"); do
outputfile=$(echo $inputfile | sed s/\.tpl//g)
envsubst < $inputfile > $outputfile
done
cat << EOF > /usr/local/etc/php-fpm.d/www.conf
[www]
listen = 127.0.0.1:9000
user = www-data
group = www-data
pm = static
pm.max_children = $MAX_CHILDREN
pm.start_servers = $START_SERVERS
pm.min_spare_servers = $MIN_SPARE_SERVERS
pm.max_spare_servers = $MAX_SPARE_SERVERS
pm.max_requests = 5000
request_terminate_timeout = 60
slowlog = /var/log/php-fpm/slow.log
php_flag[display_errors] = off
php_admin_flag[log_errors] = on
php_admin_value[upload_tmp_dir] = /var/tmp
EOF
php-fpm
здесь я генерю из env конфиги
George
29.07.2019
09:24:41
Я думаю, что сигнал может не в тот процесс уходить
Есть как бы разница между тем же nginx, который сам все хендлит и sh скриптом
Но это требует бенчмаркинга и тестирования
Maksim
29.07.2019
09:25:16
ну вроде бы да, но контейнер не всегда долго рестартует
``
# time systemctl restart docker-movies
real 0m10.960s
user 0m0.003s
sys 0m0.009s
```
проблема в том что контейнер c php-fpm рестартует дольше всех
Алексей
29.07.2019
09:26:38
ты должидаешься штатного таймаута докера после sighup
Maksim
29.07.2019
09:29:50
ладно, буду траблшутить почему долго рестартует php-fpm
Алексей
29.07.2019
09:30:42
потому что вам нужен какой то супервизор для php-fpm
https://github.com/krallin/tini
например
там же описана проблематика.
Google
George
29.07.2019
09:38:21
Maksim
29.07.2019
09:40:18
Надо подумать. Хотя смотрел dockerfile и не нашёл ничего критичного
Алексей
29.07.2019
09:40:36
а вы и не должны найти ничего критичного
George
29.07.2019
09:40:47
Алексей
29.07.2019
09:40:49
проблема специфична для контенеров
Maksim
29.07.2019
10:23:20
ну а как docker живет в проде если есть такие проблемы ?
George
29.07.2019
10:24:40
Есть, но их как бы не замечают, т.к. никто в кубере не гоняет по одной реплике сервиса
А когда их >10 - твои проблемы - вовсе не проблемы
Maksim
29.07.2019
10:25:26
берем количеством, а не качеством
George
29.07.2019
10:25:41
К сожалению
Maksim
29.07.2019
10:27:09
видимо придется делать несколько копий и через upstream балансировать между ними
George
29.07.2019
10:27:49
Вариант, ога
Maksim
29.07.2019
10:28:00
Но такой себе
George
29.07.2019
10:28:40
У тебя при количество реплик=1 все равно нет отказоустойчивости
Sabo
29.07.2019
10:36:59
как вытащить папку (где будут хранится созданные файлы) вне докера
docker-options ?
George
29.07.2019
10:59:27
Ruslan
29.07.2019
12:11:03
Использую связку docker + nginx + gunicorn + flask. У сервера OAuth код авторизации даётся на 30 секунд, а у меня воркер gunicorn умирает по таймауту больше 30. Получается, что я не успеваю дождать ответа, как код авторизации стухает... Что может быть причиной такого? Без доцкера скрипт работает отлично
George
29.07.2019
12:33:47
копай логи
Google
Ruslan
29.07.2019
12:35:02
George
29.07.2019
12:36:28
а уж отображаются ли они в логи контейнеров - это от тебя зависит
Ruslan
29.07.2019
12:39:08
Так вот там-то всё чистенько... Либо где-то мимо меня они ещё собираются, не понимаю
George
29.07.2019
12:39:30
по умолчанию фласк в гюникорн не серит логами
https://medium.com/@trstringer/logging-flask-and-gunicorn-the-manageable-way-2e6f0b8beb2f
смотри
я уж не говорю, что раз у тебя все в одном контейнере, то там у тебя еще и сюпервизорд явно
который тоже ухудшает ситуацию с логами
Ruslan
29.07.2019
12:40:59
У меня два контейнера: под nginx и под flask с gunicorn
George
29.07.2019
12:41:59
Maksim
29.07.2019
14:51:19
Подскажите, имеет ли использовать docker swarm на единственной машине, с одной стороны я могу иметь несколько реплик моего контейнера, с другой легко управлять перезапуском сервисов
George
29.07.2019
14:52:42
Maksim
29.07.2019
14:53:07
Может я чего-то пропустил, реплики можно только со свормом
George
29.07.2019
14:53:39
Нет
Ты скалировать сервисы можешь и без сворма
Maksim
29.07.2019
14:54:47
хм, сейчас посмотрю
У нас есть baremetal сервера расположенные по европе
Я так понимаю оркестрация docker-compose + ansible не является "серебрянной пулей". А что тогда ?
Google
Maksim
29.07.2019
15:13:30
swarm не стабилен, k8s избыточен в данном кейсе
я правильно понял ?
Max
29.07.2019
15:14:24
почему не стабилен?)
Maksim
29.07.2019
15:14:47
ну многие на него плюются
Max
29.07.2019
15:15:03
на кубернетис еще больше людей плюются)
Maksim
29.07.2019
15:16:02
я так понимаю что swarm single node избавить меня от гемора в виде systemd над docker-compose ?
Max
29.07.2019
15:16:23
да
Maksim
29.07.2019
15:18:35
будут все теже docker-compose но при этом нормальный оркестратор над ними ?
Gleb
29.07.2019
15:19:58
только слово "нормальный" убрать
Max
29.07.2019
15:20:10
композ немного будет отличаться
Maksim
29.07.2019
15:30:46
Gleb
29.07.2019
15:31:33
лично я верю в systemd больше. Я правда не совсем понимаю зачем вообще системд надо. ну сделай ты полиски для контейнера правильный и все
Алексей
29.07.2019
16:09:50
Gleb
29.07.2019
18:20:45
точно
George
29.07.2019
18:24:48
?
Kamal
30.07.2019
09:36:13
установил себе Gitlab
у меня теперь сервер нагружается чем до 70%
установил я по пакеуту из сайта гитлаб gitlab.com
теперь и сайты открывается медленее
до 127% поднимается сука
cpu
Andrey
30.07.2019
09:37:39
ну так поддай ресурсов