metaclass: (Default)
[personal profile] metaclass
Делаю генератор отчетов, у которого часть работы - запросы к БД и часть - постобработка. Все это работает в фоновых потоках clojure (внутри future) и паралелльно еще несколько потоков (из ScheduledThreadPool и его вариаций из java.util.concurrent) выполняют всякую вспомогательную работу типа "очистить старые данные", "пересчитать изменения пришедшие в очередь в БД".
future в clojure реализованы в том же thread pool что и функция send-off для агентов. Этот thread pool не имеет ограничений по размеру и изначально предполагался для операций, ожидающих i/o, а не cpu-bound. Пока отчет считается в БД - это нормально, но когда начинается постобработка, при превышении некоторого порога количества потоков - возникают совершенно непропорциональные тормоза, типа 30 отчетов одновременно считается за 2 минуты, 64 отчета считаются 30 минут.
Надо как-то более равномерно распределить работу по времени, чтобы количество нагружающих CPU потоков было ограничено, что ли. И вообще, надо как-то осилить профилирование нагрузки, чтобы знать, чем там кложурь и JVM занимаются.

Date: 2013-05-05 08:11 pm (UTC)
From: [identity profile] andrew kondratovich (from livejournal.com)
есть такое.

с агентами проще - можно выбирать куда совать.

можно поменять экзекутор - но он затронет весь рантайм.

Date: 2013-05-05 08:15 pm (UTC)
From: [identity profile] metaclass.livejournal.com
Да я тут в процессе насмотрелся на java.util.concurrent - там все сделано крайне грамотно, можно использовать напрямую, создать отдельный пул и в нем считать.

Date: 2013-05-06 10:31 am (UTC)
From: [identity profile] tonsky.livejournal.com
мы так и делаем: scheduledthreadpool, timer, очереди

Date: 2013-05-06 10:37 am (UTC)
From: [identity profile] tonsky.livejournal.com
почему весь? send-via же

Date: 2013-05-06 01:17 pm (UTC)
From: [identity profile] andrew kondratovich (from livejournal.com)
Ага... в итоге экзекутор для фьючеров ставим глобальный, а для агентов - экплисит. не кошерно как-то.

Profile

metaclass: (Default)
metaclass

April 2017

S M T W T F S
      1
2345678
9101112 131415
16171819202122
23242526272829
30      

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated Aug. 23rd, 2025 12:51 am
Powered by Dreamwidth Studios