LINUX.ORG.RU

История изменений

Исправление wolverin, (текущая версия) :

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

статистика в проде показала, что низкоприоритетная задача может выполняться от 10 до 60 секунд (avg 30 сек) при этом грузят одно из 2х ядер моего «селерона» на 100%, нагрузочной статистики высокоприоритетных задач у меня нет окромя простой синтетической, не позволяющей создать волну нагрузки, но в целом вроде решение работает в той идеи, что не требуется создавать кучу потоков с кучей подключений к базе по произвольному количеству приоритетов.

зы. да согласен что пулл был бы быстрее, но и в таком варианте пока отклил очень хороший, при этом не гружу на 100% всю систему, не удерживаю кучу ресурсов когда это не нужно, а это имхо и есть эффективность.

Исправление wolverin, :

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

статистика в проде показала, что низкоприоритетная задача может выполняться от 10 до 60 секунд (avg 30 сек) при этом грузят одно из 2х ядер моего «селерона» на 100%, нагрузочной статистики высокоприоритетных задач у меня нет окромя простой синтетической, не позволяющей создать волну нагрузки, но в целом вроде решение работает в той идеи, что не требуется создавать кучу потоков с кучей подключений к базе по произвольному количеству приоритетов.

зы. да согласен что пулл был бы быстрее, но и в таком варианте пока отклил очень хороший, при этом не гружу на 100% всю систему, а это имхо и есть эффективность.

Исправление wolverin, :

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

статистика в проде показала, что низкоприоритетная задача может выполняться от 10 до 60 секунд (avg 30 сек) при этом грузят одно из 2х ядер моего «селерона» на 100%, нагрузочной статистики высокоприоритетных задач у меня нет окромя простой синтетической, не позволяющей создать волну нагрузки, но в целом вроде решение работает в той идеи, что не требуется создавать кучу потоков с кучей подключений к базе по произвольному количеству приоритетов.

зы. да согласен что пулл был бы быстрее, но и в таком варианте пока отклил очень хороший, при этом не гружу на 100% всю систему, а это имхо и есть эффективность.

Исходная версия wolverin, :

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

статистика в проде показала, что низкоприоритетная задача может выполняться от 10 до 60 секунд (avg 30 сек) при этом грузят одно из 2х ядер моего «селерона» на 100%, нагрузочной статистики высокоприоритетных задач у меня нет окромя простой синтетической, не позволяющей создать волну нагрузки, но в целом вроде решение работает в той идеи, что не требуется создавать кучу потоков с кучей подключений к базе по произвольному количеству приоритетов.