@devops_ru

Страница 4224 из 4568
Maxym
25.08.2018
21:28:16
дак вот как так: https://t.me/devops_ru/422290
А вот так. Все забагованое, насколько я понял. Просто одно у одних работает лучше а у других хуже. Мьі с DM на overlay2 переехали так как в мапере есть баг по забиванию места временньіми файлами, если имадж слишком большой

Он там скачивает, крешится, качает заново и так пока не займет все место на диске

Vasiliy
25.08.2018
21:29:26
Юзай оверлэй2. Но на дебиане с докером 17.03 с предпоследним ядром не чихает
Ну вот и у меня такое же ощущение. Потому что на 18* у меня проблемы. Попробую на 17 еще, да. Просто у меня пока вопрос - в чём проблемы - в приложении или докере.

Вернусь, как будут какие-то годные результаты.

Google
Vasiliy
25.08.2018
21:30:55
Еще я сходу спрошу - какое значение backlog используете для нагруженных сервисов ? 1024 не хватает, 10к - вешает приложение. (это всё сырое - тесты еще делаю, это не быстро)

Konstantin
25.08.2018
22:11:47
Vasiliy
25.08.2018
22:13:37
Overlay2 норм, в любом случае - что ты там держать собрался? Стейтфул лучше выносить, а то что остаётся - пофиг. Хотя в проде держал и базы локально, так как они в реплике
Ну смутила меня дока докера, что якобы сначала посмотрите на brtfs/zfs, а потом на overlay2. Ну и без EE-редакции btrfs не берите. Сейчас меня больше опыт по размеру backlog для приложения беспокоит.

Konstantin
25.08.2018
22:18:09
А какой-то драйвер используется? Storage plugin?

Или просто docker run?

Dmitry
25.08.2018
22:26:53
Кстати. А родной гластер драйвер вообще существует? И есть ли смысл запариваться?

Vasiliy
25.08.2018
22:27:06
А какой-то драйвер используется? Storage plugin?
да, обычно драйвер указывается в конфиге докера. А дальше - docker run, etc Кастомы не предполагаются

Google
Dmitry
25.08.2018
22:27:51
Dmitry
25.08.2018
22:28:28
А можно раскрыть это "знают как работать" ?
Наверное имелось в виду необходимость ECC памяти итд

Konstantin
25.08.2018
22:28:39
Marian
25.08.2018
22:28:51
Кстати. А родной гластер драйвер вообще существует? И есть ли смысл запариваться?
Гластер не плох если у вас сеть хороша и задержки маленькие, но инструмеет управления убогий

Konstantin
25.08.2018
22:29:51
Marian
25.08.2018
22:30:01
А можно раскрыть это "знают как работать" ?
Вопше незнаю как без zfs жить, всюда использую.

Dmitry
25.08.2018
22:30:03
Гластер не плох если у вас сеть хороша и задержки маленькие, но инструмеет управления убогий
Мне все на примитивном уровне надо, типа синхронизация файлов Wordpress по разным нодам когда s3 не участвует

Marian
25.08.2018
22:31:09
Наверное имелось в виду необходимость ECC памяти итд
Нет необходимости в ECC, но если больше 64gb ram будете использовать то желательно.

Dmitry
25.08.2018
22:31:32
Vasiliy
25.08.2018
22:31:38
Я про storage plugin для контейнера (docker volume create -d local)
Мне для понимания - зачем разным контейнерам разные storage-driver, кроме случаев, когда мы хотим persistance volume, nfs/s3/иное.

Dmitry
25.08.2018
22:32:19
Vasiliy
25.08.2018
22:32:22
Вопше незнаю как без zfs жить, всюда использую.
Вопрос в том и был - почему вы считаете что это круто. Что нужно иметь ввиду, если использовать ваше решение.

Dmitry
25.08.2018
22:32:36
Зеркалирование?
На оба зеркала запишется битая хня

Marian
25.08.2018
22:34:53
Как нет? А если память битая, что на диск пойдёт?
Хороший вопрос. Файловая делает чек сум, так что все норм.

Google
Marian
25.08.2018
22:35:40
Чего?
Дание зеркало или розделени по нодам?

Dmitry
25.08.2018
22:36:29
http://jrs-s.net/2015/02/03/will-zfs-and-non-ecc-ram-kill-your-data/

Это разве уже не актуально

Vasiliy
25.08.2018
22:37:16
У разных контейнеров разные требования?)
+ @AutomationD В том и вопрос - один вопрос, когда для контейнера хотим "сетевую ФС", для persistance - разные storage-драйвера понятны. А на локалхосте зачем ? Просто предлагаю разделить локальные ФС от сетевых ФС.

Marian
25.08.2018
22:37:41
Вопрос в том и был - почему вы считаете что это круто. Что нужно иметь ввиду, если использовать ваше решение.
Не в крутости дело а простоте. А какая файловая нам даст такой же инструментарий?

Vasiliy
25.08.2018
22:38:07
Alexander
25.08.2018
22:41:16
http://jrs-s.net/2015/02/03/will-zfs-and-non-ecc-ram-kill-your-data/
А это не относится ко всем ФС? Если в побьются данные в странице dirty cache, которая должна упасть на ext4, будет что-то принципиально другое?

Vasiliy
25.08.2018
22:41:26
Странное предложение
Хм, имхо. в треде смешались разные концепции, поэтому и пошло предложение разделить локалхост от сетевых ФС. Чтобы не тратить время, можем в привате определиться в терминах.

Marian
25.08.2018
22:41:28
Я в zfs не силён. Что даёт ? Порекламируйте ?
Дает пить пиво, мне удевительно слишать подобное. Copy on write, snapshots, commpress, dedup, и многое другое.

Konstantin
25.08.2018
22:42:45
Konstantin
25.08.2018
22:43:29
Там образы и временные данные от стейтлесс, пох на них

Vasiliy
25.08.2018
22:44:10
Ты про фс для локального драйвера, а я в общем - локальный особо не юзаю, поэтому оптимизацией не парился.
ээ, дык текущий тред про zfs - это вроде как про локальные ФС. Удалённые ФС - другая история. Или я что-то там пропустил ?)

Konstantin
25.08.2018
22:44:40
Не пропустил, но не понял меня) что ты там хранишь то?

Marian
25.08.2018
22:45:15
Пиво в питере есть. А нагрузка на zfs есть ?
Если нагрузить то есть, или оверхед имееться ввиду?

Vasiliy
25.08.2018
22:46:18
Не пропустил, но не понял меня) что ты там хранишь то?
нихрена я там не храню. но в iowait диск уходит. Скорее всего логи в докере, которые на диск льются, но прям на 100% не готов утвердать. Обычные hdd, да

Вернее sas, но разницы там ..

Konstantin
25.08.2018
22:47:20
Хм, явно не в фс и докере проблема. Я даже постгри держал ext4+overlay2 и всё это в ceph

Google
Konstantin
25.08.2018
22:47:41
Никаких проблем с io

Alexander
25.08.2018
22:48:13
Еще я сходу спрошу - какое значение backlog используете для нагруженных сервисов ? 1024 не хватает, 10к - вешает приложение. (это всё сырое - тесты еще делаю, это не быстро)
Попробуйте увеличить количество инстансов. Большой бэклог может быть нужен, чтобы пережевывать большие пики новых соединений. Если вам стабильно его не хватает из-за того, что приложение постоянно не успевает accept-ить коннекты, значит его увеличение мало поможет, просто он будет затыкаться чуть позже.

Admin
ERROR: S client not available

Konstantin
25.08.2018
22:49:22
А что за логи? Контейнеры генерят? Этож сколько нужно, чтобы диск ложить

Vasiliy
25.08.2018
22:50:12
Ща опишу.

Konstantin
25.08.2018
22:50:32
Выглядит как дебаг on в проде
Он не может быть больше чем журнал у постгри

Vasiliy
25.08.2018
22:54:29
Смотрите. У меня знатное подозрение, что я где-то не вижу чего-то очевидного. Я пытаюсь грузить приложение по вебсокетам. Прямо сейчас у меня 8(!) клиентов, которые параллельно грузят python-sanic приложение, которое в свою очередь стучится к базам(psql, redis, elastic) и приложению на nodejs. Я вижу загрузку на iowait + si, но не критичную - < 10% в сумме. Всё в докере, я сейчас проверяю, что дело не в нём. История такая - если у меня мало в backlog - я вижу, что начинают отправляться syncookies Если я выкручиваю локальный backlog приложения - примерно через 2 часа приложение перестаёт принимать соединения. Пока я не смог через отладчики получить понятной информации - что именно там происходит.

Не только беклог важен, еще надо изменить другие параметри стека.
если мы про sysctl/ulimit - вроде там накручено достаточно для обработки запросов.

Vasiliy
25.08.2018
22:56:16
А что за логи? Контейнеры генерят? Этож сколько нужно, чтобы диск ложить
Логи - обычные логи контейнера: req_start db_conn start de_end ext_req_start итп

Marian
25.08.2018
22:57:33
если мы про sysctl/ulimit - вроде там накручено достаточно для обработки запросов.
Будет завтра время отпишу. Но не в беклоге проблема ибо без проблем можно держать 500к одновременних конектов а если потюнить то и 1М

Vasiliy
25.08.2018
23:02:29
syncookies высылаются при заполнении syn queue, а backlog — это accept queue. вам другое крутить надо.
Проблема с backlog в том, что при увеличении параметра - приложение просто намертво зависает. Буду рад услышать идеи для тестирования - что именно проверить. Пока из схемы ubuntu -> docker -> alpine -> python Убираю лишние сущности и тестирую на физическом сервере без докеров. точных результатов еще нет, но зависает. Перепроверяю.

Будет завтра время отпишу. Но не в беклоге проблема ибо без проблем можно держать 500к одновременних конектов а если потюнить то и 1М
Проблема может быть не в системе, а в фреймворке или где-то еще. На hello_world приложении проблем не нашёл. Ищу. Пока безуспешно.

Vasiliy
25.08.2018
23:09:25
Для начала стоит убедиться в том, что крутить backlog вообще надо. У вас accept queue переполняется тоже или только syn queue?
Сейчас не готов. Завтра или в понедельник отвечу. Спасибо за вопрос. По идее в случае websocket переполняется backlog, но с текущий тестированием - это вопрос. Поставлю мониторинг. Когда я про backlog говорю - чем больше значение backlog в listen, которое я задаю python/nodejs приложениям, тем быстрее они перестают отвечать на запросы. Всё это в тестах сейчас, чтобы не соврать.

Стоп, accept очередь на 8 клиентах у меня точно переполниться не могла. оно там асинхронное всё, конечно, но нет.

Google
Alexander
25.08.2018
23:16:23
Стоп, accept очередь на 8 клиентах у меня точно переполниться не могла. оно там асинхронное всё, конечно, но нет.
ну тогда зря крутили размер accept очереди. но, если есть сомнения, замониторьте.

Vasiliy
25.08.2018
23:18:28
ну тогда зря крутили размер accept очереди. но, если есть сомнения, замониторьте.
Формально нет - это ж докер: * Клиент * 8 соединений(непрерывно) * Сервер - 8 соединений + 3 базы + docker-сервис * docker-сервис + база А ожидается не 8 соединений, а 50к websocket (с задержкой запросов по 1с)

Исправил слова - внешний сервис => отдельный docker-сервис.

Alexander
25.08.2018
23:22:22
Формально нет - это ж докер: * Клиент * 8 соединений(непрерывно) * Сервер - 8 соединений + 3 базы + docker-сервис * docker-сервис + база А ожидается не 8 соединений, а 50к websocket (с задержкой запросов по 1с)
без разницы, сколько одновременных соединений. accept queue — это про то, сколько должно запоминать ядро тех established соединений, которые еще не было accept-нуты приложением. потому и увеличение этой очереди нужно лишь в случае гигантских пиков новых соединений.

Vasiliy
25.08.2018
23:26:12
без разницы, сколько одновременных соединений. accept queue — это про то, сколько должно запоминать ядро тех established соединений, которые еще не было accept-нуты приложением. потому и увеличение этой очереди нужно лишь в случае гигантских пиков новых соединений.
Это понятно. Непонятно почему приложение подвисает и после 2млн запросов перестаёт принимать новые соединения (int исчёрпывается?) При этом. если уменьшить backlog до 512 - 8млн - не проблема. Пока это выглядит как магия. Пытаюсь её в более техническую плосткость перевести. Вот и спрашиваю - может идеи есть какие-то.

Никита
25.08.2018
23:28:18
Мимо-предложу кстати посмотреть нагрузку по ядрам, типа mpstat -P ALL

Alexander
25.08.2018
23:30:07
вроде 10240, умножал на 10. Это важно ?
Просто, вдруг вы выставляли backlog > somaxconn. :)

Vasiliy
25.08.2018
23:32:24
Просто, вдруг вы выставляли backlog > somaxconn. :)
Посмотел прямо сейчас somaxconn = 25000 Backlog приложения - 1000 Я подбираю параметры. на этих - python-приложение подвисает. для nodejs может другие, но она пока меньше волнует.

Мимо-предложу кстати посмотреть нагрузку по ядрам, типа mpstat -P ALL
Да, ядра перегружены python-приложением. Возможно, оно тут теряет какие-то ресурсы. Сейчас делаю через балансировщик, чтобы в одно ядро/процесс было не более 10 запросов (меньше - убивает всю идею асинхронности). Кроме haproxy что такое может позволить ?) Меня сильно смущает, что python-asyncio приложения говорят - нам не нужен gunicorne - мы и так лучше. Пока это не очевидно.

Исправил - некоторую конкуренцию для async-приложений нужно создавать. Что делать с кучей вебсокетов (каждый - отдельное tcp-соединение и питону с нодой становится плохо) - вопрос.

Страница 4224 из 4568