
Anton
18.10.2018
11:51:18
погоди
ты сайдкик вызывал или же эктив джоб?

Tim
18.10.2018
11:51:51

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

Google

Tim
18.10.2018
11:52:31

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

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

Tim
18.10.2018
11:53:02

Anton
18.10.2018
11:53:56

Vasiliy
18.10.2018
11:54:35

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

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

Anton
18.10.2018
11:56:07

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

Google

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

Anton
18.10.2018
11:56:54

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
но я не уверен еще

Vasiliy
18.10.2018
11:57:17

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

Tim
18.10.2018
11:59:55

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
поэтому проверь для начала что сайдкик работает тоже так же

Tim
18.10.2018
12:01:02

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

Anton
18.10.2018
12:06:57

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

Vasiliy
18.10.2018
12:12:42

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

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
гайды какие