@proRuby

Страница 1568 из 1594
Anton
18.10.2018
11:51:18
погоди

ты сайдкик вызывал или же эктив джоб?

Vasiliy
18.10.2018
11:52:18
хорошо

Google
Tim
18.10.2018
11:52:31
ты сайдкик вызывал или же эктив джоб?
так, получается, что ActiveJob, но там сайдкик крутится

Anton
18.10.2018
11:52:36
с этого и надо было начинать

Vasiliy
18.10.2018
11:52:50
ну не удивительно что что перфом_латер жрет меньше

Anton
18.10.2018
11:53:56
хм, не думал, что это существенно
ты знаешь как AJ работает и что это такое?

Tim
18.10.2018
11:55:16
нет, не изучал подробно, т.к. был уверен, что проблема в сайдкике. но судя по функционалу, что-то вроде прослойки перед клиентом сайдкика (во всяком случае здесь). но возможно ошибаюсь

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

Vasiliy
18.10.2018
11:55:53
ну ты мерь не топом

I
18.10.2018
11:56:36
а посмотри ради интереса с #perform_later vs #perform_async

Google
Tim
18.10.2018
11:56:39
и довольно странно, что размер памяти уменьшается в рантайме, ведь, как я читал, если руби берёт память у оси, обратно её не отдаёт

Vasiliy
18.10.2018
11:56:54
а чем нить типа https://github.com/michaelherold/benchmark-memory

Anton
18.10.2018
11:57:05
ну и скорее всего там беда где-то тут

https://github.com/rails/rails/blob/master/activejob/lib/active_job/enqueuing.rb#L49-L55

но я не уверен еще

Anton
18.10.2018
11:58:39
а не

я наврал

там все еще круче

I
18.10.2018
11:59:00
кстати говоря, а в sidekiq используется дефолтный JSON для вставки в redis

если заменить на что-то другое - будет лучше https://github.com/mperham/sidekiq/blob/master/lib/sidekiq/client.rb#L202

Anton
18.10.2018
11:59:35
и довольно странно, что размер памяти уменьшается в рантайме, ведь, как я читал, если руби берёт память у оси, обратно её не отдаёт
короче, немного истории как это работает. все твои джобы серелизуются в json, кладуться в редис

Tim
18.10.2018
11:59:55
если заменить на что-то другое - будет лучше https://github.com/mperham/sidekiq/blob/master/lib/sidekiq/client.rb#L202
ну так там же в качестве параметра ток айдишник. самое весёлое походу связано с базой данных

Anton
18.10.2018
12:00:00
а потом начинается адок, потому что AJ создает сам свой основной воркер (один) и через него гоняет все JA джобы https://github.com/rails/rails/blob/master/activejob/lib/active_job/queue_adapters/sidekiq_adapter.rb#L38-L44

Tim
18.10.2018
12:00:07
ибо когда много записей вставлять, то личит намного сильнее

Anton
18.10.2018
12:00:24
поэтому проверь для начала что сайдкик работает тоже так же

Anton
18.10.2018
12:01:12
aj везде

Google
Vasiliy
18.10.2018
12:01:19
я думою евошный код течет просто

Tim
18.10.2018
12:01:41
в консоли не течёт

Anton
18.10.2018
12:01:56
я думою евошный код течет просто
тогда бы обе джобы текли

возможно действительно течет сайдкик в том плане, что он же каждые N времени проверяет журнал отложенных записей и если рано - кладет обратно

Tim
18.10.2018
12:03:18
так, чтобы make things clear: при perform_now ничего нигде не создаётся и та джоба выполняется в том же environment, в котором она была запущена?

Anton
18.10.2018
12:04:00
так, а это поподробнее плз
ну блин, ты смотрел вообще как сайдкик работает?

даже не так

Tim
18.10.2018
12:04:22
я читал разные ридмишки и статейки у них на сайте, но про это не нашёл

Anton
18.10.2018
12:04:30
ты думал когда нибудь, как работают отложенные задачи?

Tim
18.10.2018
12:04:38
если скажешь где, с удовольствием прочитаю

Anton
18.10.2018
12:04:45
в коде? Оо

сейчас

Tim
18.10.2018
12:05:00
нет, но можно и в коде

ты прям по сорцам изучал его чтоль?

Anton
18.10.2018
12:05:43
можешь меня тут найти https://sidekiq.org/about.html

I
18.10.2018
12:06:04
ты прям по сорцам изучал его чтоль?
вот я линк выше кидал - пара строчек выше)

Tim
18.10.2018
12:06:11
ты думал когда нибудь, как работают отложенные задачи?
ну, крутится процесс, он дёргает из базы (редиса) сериализованные джобы, потом их запускает в каком-то энвайронменте. подозреваю, что у сайдкика в каждом треде отдельный энвайронмент, но хз

Google
Anton
18.10.2018
12:07:06
а отложенные как бы делал?

по сути тебе вот сюда надо https://github.com/mperham/sidekiq/blob/master/lib/sidekiq/scheduled.rb#L11

если я правильно помню

Tim
18.10.2018
12:08:11
а отложенные как бы делал?
ну, отложенные так же, только сначала делаешь таймаут на время когда она должна произойти

Anton
18.10.2018
12:08:45
ну, отложенные так же, только сначала делаешь таймаут на время когда она должна произойти
т.е. у тебя бы спавнился тред на каждый джоб, который засыпал?

Tim
18.10.2018
12:09:06
либо в бд хранишь как-то типа вот эти все джобы должны пройти после timestamp. когда timestamp наступает, все джобы из той штуки читаются и выполняются

ну типа хэш timestamp => array(jobs)

т.е. у тебя бы спавнился тред на каждый джоб, который засыпал?
ну, сообщение в главный процесс, что такую то джобу надо выполнить

но типа это хрупкое решение

Anton
18.10.2018
12:10:31
?

Vasiliy
18.10.2018
12:11:37
я думаю всё равно его код течет)

Anton
18.10.2018
12:11:38
(я собственно к тому веду, что у тебя есть какой-то журнал, где таймпстампы хранятся и каждый раз достаются все джобы, проверяются в руби и если не время выполнения - кладуться обратно)

так оно и работало

Tim
18.10.2018
12:11:51
ну, у тебя есть переменная "следующий таймстэмп из базы". если сейчас таймстемп больше, то вытягиваешь все джобы из того таймстемпа, и берешь следующий таймстемп

Anton
18.10.2018
12:11:56
если у тебя много задач которые отложены - то беда возникает

Tim
18.10.2018
12:12:29
почему не сделать?

Anton
18.10.2018
12:12:30
там обычная очередь строк, в которой лежат json строки каждой джобы

почему не сделать?
ты с редисом работал когда-нибудь?

Google
Tim
18.10.2018
12:13:07
ты с редисом работал когда-нибудь?
ну, больше чем достать ключ или подправить код, нет

Anton
18.10.2018
12:13:11
не, оно кладется отдельным полев в мето информацию джобы

kolas
18.10.2018
12:13:19
вообще в редисе можно сделать по времени с помощью sorted set

Tim
18.10.2018
12:13:38
ну, в тем более

Anton
18.10.2018
12:13:57
вообще в редисе можно сделать по времени с помощью sorted set
да, только тут возникает беда, тебе нужно будет делать список хешей, в которых сортировать эти хеши по одному полю

kolas
18.10.2018
12:14:25
не понял

Anton
18.10.2018
12:14:32
агрх

давайте с начала

кто-то работал с редисом больше чем дернуть сайдкик?

Максим
18.10.2018
12:14:55
так

пацаны

давайте лучше так

kolas
18.10.2018
12:15:00
я

Максим
18.10.2018
12:15:03
где почитать про активджоб

а где про сайдкик

Tim
18.10.2018
12:15:14
в сорцах)

Anton
18.10.2018
12:15:16
я
вот, как ты сделаешь список вложенных структур?

Максим
18.10.2018
12:15:17
ток так чтоб прям сразу понял а о вот оно в чём разниц

нееее

kolas
18.10.2018
12:15:19
но я не спорю с тобой как сайдкик работает, ты полюобму лучше знаешь раз контрибутил туда )

Максим
18.10.2018
12:15:21
гайды какие

Страница 1568 из 1594