Schedulers.elastic () не использует ранее созданные потоки - PullRequest
0 голосов
/ 01 июня 2018

Я написал web-сервер на spring-boot-2.0, который использует netty под капотом.Это приложение использует Schedulers.elastic () темы.

Когда это началось, было создано около 100 эластичных нитей.Эти темы использовались редко, и у нас было мало загрузки.Но после рабочего дня число потоков в пуле эластичных элементов увеличилось до 1300. И теперь выполнение выполняется на потоках эластичных-1ХХХ, эластичных-12ХХ (номера имен превышают 100 и даже 900).

Elastic, насколько я понимаю, использует cachedThreadPool под капотом.Почему были созданы новые эластичные нити и почему задача переключилась на новые нити?

Каковы критерии добавления новых тенденций?И почему старые нити (эластичный-XX, эластичный-1xx) не были закрыты?

Ответы [ 2 ]

0 голосов
/ 26 июня 2018

Проблема заключалась в следующем: я использовал Schedulers.elastic () для неблокирующих операций, хотя таких операций не было.Когда я удалил эластичный (), мой сервис начал работать правильно (без потоков эластичного).

0 голосов
/ 01 июня 2018

Без дополнительной информации о типе рабочей нагрузки, максимальном параллелизме, пакетном режиме и средней продолжительности задачи очень трудно определить, есть ли здесь проблема.

По определению, упругий планировщик создает неограниченное числопотоки, если новые задачи добавляются в очередь.

Если рабочая нагрузка является скачкообразной, с одновременным одновременным выполнением в ночное время, то неожиданно найти большое количество потоков.Вы можете использовать варианты newElastic для уменьшения TTL (по умолчанию 60 с).

Опять же, без дополнительной информации трудно сказать, но ваша рабочая нагрузка может не соответствовать этому планировщику.Если ваша рабочая нагрузка связана с процессором, лучше подходит параллельный планировщик.Эластичный предназначен для задач, связанных с вводом / выводом.

...