
Tim
18.10.2018
12:15:34
берёшь сорцы, читаешь. гайды это пережёванная пища

Anton
18.10.2018
12:15:42

Ilya
18.10.2018
12:15:46

Максим
18.10.2018
12:15:52

Google

Anton
18.10.2018
12:15:58

Tim
18.10.2018
12:16:05
вставь, ты же программист, дохуя небось лутаешь

kolas
18.10.2018
12:16:11

Максим
18.10.2018
12:16:14
я очень жадный

Anton
18.10.2018
12:16:15
думаешь правильно (больше никак)

Tim
18.10.2018
12:16:26
ну устройся где дмс со стоматологией

Anton
18.10.2018
12:16:28
а теперь вопрос

Максим
18.10.2018
12:16:37
бля просто дайте гайды

Anton
18.10.2018
12:16:52
у тебя объекты вида
job_class: …
perform_at: …
attrs: [ … ]
и все это в json

Максим
18.10.2018
12:16:58
ну ведь бля никому не хочется сидеть читать сорцы сутками напролёт искать где там золотая жила знаний которая сразу ответит на все вопросы

Tim
18.10.2018
12:17:06
ну то есть джейсоны?

Google

Anton
18.10.2018
12:17:09
как ты будешь по таймстемпу сортировать в списке редиса?
по perform_at ключу json строки?

Tim
18.10.2018
12:17:48
ну, до сериализации делать ключ perform_at, значение - тот джейсон

kolas
18.10.2018
12:17:51
в sorted set ключем поле в unix-timestamp == perfrom_at

Anton
18.10.2018
12:18:04
и там еще немного магии
сейчас

kolas
18.10.2018
12:19:19
как понять одинаковые? в одно время?
в общем redis умеет пулить по условию redis.zremrangebyscore

Anton
18.10.2018
12:19:53
не, я малость путаю
там короче сортед сет, но есть залупа, которую я вспомнить пытаюсь
https://github.com/mperham/sidekiq/blob/master/lib/sidekiq/client.rb#L193-L196
так что если совсем захотеть, у тебя вряд ли потечет память
с самого сайдкика

Vasiliy
18.10.2018
12:25:57
течет его код

Anton
18.10.2018
12:26:21
а вот не факт
не

Tim
18.10.2018
12:27:04
течет его код
но почему perform_now не течёт, а perform_later течёт? из-за того, что aj шаманит как-то?

Anton
18.10.2018
12:27:17
на вставку AJ тоже течь не может

Google

Vasiliy
18.10.2018
12:27:34
ты приведи код своих измерений
как ты меришь?

Anton
18.10.2018
12:27:56
ты мерил просто явный вызов кода пару раз?

Vasiliy
18.10.2018
12:28:02
а то тут к гадалке ходи

Tim
18.10.2018
12:28:10
с момента начала разговора я ещё не мерил, до этого мерил через top

Vasiliy
18.10.2018
12:28:47
возьми мемори профайлер, два блока с нов и латер и пляши оттуда

Tim
18.10.2018
12:29:25
ну я делал кстати мемори профайлеров нов, там особо ничего meaningful не дало
ну типа ретейнед мемори в основном была у этого гема для майкрософтовского графа
который при первом вызове метамагией создает дохуя классов, лол
но они поэтому и остались, что он создавал константы верхнего уровня

kolas
18.10.2018
12:30:24
как у сайдкика может течь код? разве его треды не должны умирать после выполнения работы?

Tim
18.10.2018
12:30:59
да, как работают треды у сайдкика?

Anton
18.10.2018
12:31:25
это я тебе со 100% увереностью говорю

Tim
18.10.2018
12:31:55
я верю

Anton
18.10.2018
12:32:03
так что в твоем случае проблемы 2
3
1. ты тестируешь хуево
2. твой код течет
3. AJ течет

Google

Roman
18.10.2018
12:32:45
нафига вообще aj?

Anton
18.10.2018
12:32:49
отсортировал в порядке проверки, с которой я начинал бы разбираться

Vasiliy
18.10.2018
12:32:56
4. мы по прежнему не видим как ты это делаешь

Anton
18.10.2018
12:32:56

Roman
18.10.2018
12:33:11
выкинул его и юзаю просто сайдик ?♂️
какая-то очередная абстракция непонятно зачем

kolas
18.10.2018
12:33:45
тоже выкинул

Tim
18.10.2018
12:35:03
1. как надо? мемори профайлером запускал, ничего особенного не выдало, кроме того при большом числе запусков ретейнед мемори было примерно так же как и при малом
2. вполне возможно, но почему он течёт в одном случае и не течёт в другом? может есть какая-то разница в энвайронментах?
3. не знаю, маловероятно

Vasiliy
18.10.2018
12:36:36
возьми бенчмарк мемори
и типа такого
Benchmark.memory do |x|
x.report("1") { job.perform_now(id) }
x.report("2") { job.perform_later(id) }
x.compare!
end

kolas
18.10.2018
12:37:47
это не реальное сравнение же будет

Tim
18.10.2018
12:37:48
ну так job.perform_later в процессе консольки память вообще не сожрёт

Anton
18.10.2018
12:38:42

kolas
18.10.2018
12:39:43
perform_now вообще отправит на сервер или тут же выполнит?

Tim
18.10.2018
12:39:53
да, такой же вопрос
имхо тут же

Vasiliy
18.10.2018
12:40:26
не исключаю что я не верно скинул)

Google

Vasiliy
18.10.2018
12:40:47

Tim
18.10.2018
12:41:19
а тогда почему память этого же процесса кушается? и я при выключенном сайдкике могу выполнять perform_now

Vasiliy
18.10.2018
12:41:54
хм.. ну может АЖ это
но тогда как он выполнение не блокирует

Tim
18.10.2018
12:42:28
блокирует таки

Alex
18.10.2018
12:43:12
perform_now блокирует
попробуйте банально письмо через рельсу без установленного сайдика отправить

kolas
18.10.2018
12:43:40
да, синхронно в этом же процессе запустит

Tim
18.10.2018
12:44:05
тогда почему я тестирую не то?

Anton
18.10.2018
12:44:54
ты вот выше проверил сколько памяти клиент жрет
а течет сервер

Tim
18.10.2018
12:45:19
не, там perform_now
я именно отработку джобы тестирую

Vasiliy
18.10.2018
12:46:10
или чё он тестит раз блочик

Tim
18.10.2018
12:46:30
в сайдкик это даже не уходит
это в том же процессе исполняется

Alex
18.10.2018
12:46:46

Tim
18.10.2018
12:47:10

Alex
18.10.2018
12:47:19