@proRuby

Страница 1569 из 1594
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
вставь, ты же программист, дохуя небось лутаешь

Максим
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
в sorted set ключем поле в unix-timestamp == perfrom_at
ага, только что делать, когда у тебя одинаковые джобы?

и там еще немного магии

сейчас

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

в общем redis умеет пулить по условию redis.zremrangebyscore
короче, я напутал малость. там через https://redis.io/commands/zrangebyscore достается все нужные джобы по таймстампу, по штучно, после пушатся в основную очередь для выполнения

так что если совсем захотеть, у тебя вряд ли потечет память

с самого сайдкика

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

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

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
нафига вообще aj?
модно и молодежно

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

какая-то очередная абстракция непонятно зачем

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

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

4. мы по прежнему не видим как ты это делаешь
ну я делал MemoryProfiler.report {Job.perform_now(id)}.pretty_print в топе по retained memory был тот гем с его созданием классов через метамагию

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 в процессе консольки память вообще не сожрёт

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

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

имхо тут же

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

Google
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
тогда почему я тестирую не то?
потму что у тебя 2 кода есть, клиент, который пушит в редис и сервер, который обрабатывает

ты вот выше проверил сколько памяти клиент жрет

а течет сервер

Tim
18.10.2018
12:45:19
не, там perform_now

я именно отработку джобы тестирую

Vasiliy
18.10.2018
12:46:10
perform_now блокирует
так у него ж сайдкик

или чё он тестит раз блочик

Tim
18.10.2018
12:46:30
в сайдкик это даже не уходит

это в том же процессе исполняется

Alex
18.10.2018
12:46:46
так у него ж сайдкик
расскажи разницу между perform_now и perform_later тогда

Alex
18.10.2018
12:47:19
сейчас и потом)
технически

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