Size: a a a

Saint P Ruby Community

2021 February 03

A

Alex in Saint P Ruby Community
А со скейлингом как? Я пытаюсь начать использовать внешние мониторы (примерно такая же конфигурация), но фрустрирует отсутствие возможности нормально заскейлить интерфейс. Ставлю везде скейлинг 200, в итоге на мониторах все огромное, на ноутбучном экране довольно мелкое. Это как-то решается?
источник

A

Alex in Saint P Ruby Community
Копаю в сторону xrandr, но пока ощущение каких-то адских костылей.
источник

AN

Andrey Novikov in Saint P Ruby Community
Alex
А со скейлингом как? Я пытаюсь начать использовать внешние мониторы (примерно такая же конфигурация), но фрустрирует отсутствие возможности нормально заскейлить интерфейс. Ставлю везде скейлинг 200, в итоге на мониторах все огромное, на ноутбучном экране довольно мелкое. Это как-то решается?
У меня везде 200 и меня устраивает. Монитор подальше отодвинул и мне комфортно.
источник

A

Alex in Saint P Ruby Community
Ясно, спасибо😐
источник

MS

Mikhail Sytchev in Saint P Ruby Community
Sidekiq вопрос:

Кто-то пробовал адаптировать у себя паттерн Queue Sharding (https://www.mikeperham.com/2019/12/17/workload-isolation-with-queue-sharding/)? Получилось ли сделать? Какую обвязку пришлось писать? Есть ли альтернативные решения из коробки?
источник

A

Anton in Saint P Ruby Community
Mikhail Sytchev
Sidekiq вопрос:

Кто-то пробовал адаптировать у себя паттерн Queue Sharding (https://www.mikeperham.com/2019/12/17/workload-isolation-with-queue-sharding/)? Получилось ли сделать? Какую обвязку пришлось писать? Есть ли альтернативные решения из коробки?
я не использовал, но интересно было бы разобраться. Из статьи по ссылке я понял что просто запускается 8 инстансов сайдкика со специфичным названием очереди и все задачи распределяются между этими очередями рандомно.
Но вот непонятно как это снизит нагрузку на систему? Ну то есть нельзя же до бесконечности увеличивать количество инстансов. Вот в статье написано что 8 и типа нагрузка уменьшится на 12-25 процентов. А почему не 100 чтобы нагрузка уменьшилась до 1 процента.
Я к тому что если один инстанс сайдкикак будет выполнять задачи из очереди быстрее имея 100% ресурсов, а 8 инстансов - медленее потому что будут ждать когда другой инстанс освободит эти ресурсы. Или я не понимаю?
источник

DT

Dmitry Tsepelev in Saint P Ruby Community
Если у тебя один сайдкик — он будет просто ждать IO большую часть времени. Если несколько — они будут по очереди пользоваться процессором. Если очень много сайдкиков — процессор станет узким местом
источник

A

Anton in Saint P Ruby Community
а типа проблема не в самом сайдкике а с какой периодичность он редис опрашивает?
источник

DT

Dmitry Tsepelev in Saint P Ruby Community
Скорее в том, чем обычно сайдкик занимается
источник

DT

Dmitry Tsepelev in Saint P Ruby Community
(БД, походы по сети,…)
источник

A

Anton in Saint P Ruby Community
да согласен, надо понимать контекст. Если рассмотреть работу с БД то по идее можно попробовать распределять разные таски для разных таблиц. если пересечений не будет тогда должны выполняться параллельно. Главное в ограничение по коннектам не упереться
источник

DT

Dmitry Tsepelev in Saint P Ruby Community
Речь немного о другом 🙂 Если у тебя один сайдкик, то, пока он “пошел” в БД, ничего другого выполняться не будет, если несколько — то в это время можно повыполнять другие джобы.
источник

A

Anton in Saint P Ruby Community
понял, спасибо
источник

VM

Vitaly Mashanov in Saint P Ruby Community
Alex
Друзья, можно нерелевантный руби вопрос — кто-то использует ноутбук 15'6 UHD с линуксом и внешними мониторами (желательно 4k)?
У меня монитор 4к LG на 27 дюймов и убунта.
Я через gnome tweak tool в разделе шрифтов коэффициент масштабирования выставил на 1,25. Мне стало норм.
источник

A

Alex in Saint P Ruby Community
Vitaly Mashanov
У меня монитор 4к LG на 27 дюймов и убунта.
Я через gnome tweak tool в разделе шрифтов коэффициент масштабирования выставил на 1,25. Мне стало норм.
Да так можно, но в моем случае проблема в том, что у меня еще и ноутбук для экрана которого хочется свои настройки:)
источник

VD

Vla Dem in Saint P Ruby Community
Anton
я не использовал, но интересно было бы разобраться. Из статьи по ссылке я понял что просто запускается 8 инстансов сайдкика со специфичным названием очереди и все задачи распределяются между этими очередями рандомно.
Но вот непонятно как это снизит нагрузку на систему? Ну то есть нельзя же до бесконечности увеличивать количество инстансов. Вот в статье написано что 8 и типа нагрузка уменьшится на 12-25 процентов. А почему не 100 чтобы нагрузка уменьшилась до 1 процента.
Я к тому что если один инстанс сайдкикак будет выполнять задачи из очереди быстрее имея 100% ресурсов, а 8 инстансов - медленее потому что будут ждать когда другой инстанс освободит эти ресурсы. Или я не понимаю?
задача не в снижении нагрузки на систему, а в избежании ситуации, когда очередь забита задачами одного большого аккаунта; например, у одного аккаунта 100k пользователей и он отправляет им рассылку; это может занимать десятки минут, очередь mailers будет занята, все письма у других аккаунтов пойдут с задержкой
источник

VD

Vla Dem in Saint P Ruby Community
в статье как раз и говорится, что речь о multi-tenant приложениях
источник

VD

Vla Dem in Saint P Ruby Community
мы решали эту проблему (а это серьезная, кстати, проблема) по-другому: на этапе постановки задачи в очередь делали throttle — запрещали ставить больше X задач в N секунд (для X+K устанавливали задержку, т.е., `wait(until: some_time)`); таким образом, задачи в очереди от разных аккаунтов перемешиваются и "маленькие" аккаунты спокойно проскакивают
источник

VD

Vla Dem in Saint P Ruby Community
Шардинг выглядит более простым решением, но в нём есть недостаток: с вероятностью 1/N у нас задачи всё равно попадают в забитый шард и кому-то придётся ждать; да, реже, но всё же.

Кажется, логичным продолжением этой идеей является балансировка: когда мы не случайно выбираем шард для очереди, но сначала смотрим, в каком шарде меньше всего размер.
источник

AD

Anton Davydov in Saint P Ruby Community
Vla Dem
мы решали эту проблему (а это серьезная, кстати, проблема) по-другому: на этапе постановки задачи в очередь делали throttle — запрещали ставить больше X задач в N секунд (для X+K устанавливали задержку, т.е., `wait(until: some_time)`); таким образом, задачи в очереди от разных аккаунтов перемешиваются и "маленькие" аккаунты спокойно проскакивают
А можешь подробнее рассказать как вы задержку ставили?
источник