задача - скачать в параллель из удалённой MongoDB(причём с нескольких серверов replicaset-а) как можно больше данных (не суть каких) и запихнуть в себя неким образом обработав (не суть как, но обработка ресурсоёмка). Я разделил логику многопоточного засасывания (запросов) данных из MongoDB и логику обработки. И число потоков обработки сделал равным числу cores CPU. А вот как выбирать число потоков для запроса MongoDB? Моделирование показывает, что на одних машинах оптимум 14 потоков, на других 20. Это неким образом коррелирует (вероятно) с локально сетевой инфраструктурой... Но как выбрать число потоков на скачивание также просто как Environment.ProcessorCount для обработки? Может какие идеи есть?
Тут зависит от ширины канала до монги, и от того, сколько твоя монга может отдавать одновременно
Обсуждают сегодня