Работы по сканированию в RISM выполняются параллельно. Количество одновременно выполняемых работ определяется количеством фоновых процессов сервера sidekiq (часть приложения RISM).
Необходимо учитывать, что каждая работа по сканированию потребляет некоторое количество оперативной памяти компьютера. То есть максимальное количество одновременно запущенных сканирований (фактически - максимальное количество фоновых процессов sidekiq) определяется доступным объемом памяти. Количество потребляемой памяти составляет порядка 120 Мб на каждый процесс sidekiq плюс память, потребляемая каждым процессом nmap - от нескольких десятков килобайт до гигабайта (зависит от количества сканируемых хостов). Рекомендуется задачи по сканированию большого числа хостов разбивать на несколько задач поменьше.
Количество фоновых процессов sidekiq настраивается в файле
config/sidekiq.yml
Пример этого файла (используется на системе с 6 Гб памяти)
---
:concurrency: 21
staging:
:concurrency: 21
production:
:concurrency: 21
:queues:
- default
- now_scan
- scheduled_scan
- free_shodan_scan
:limits:
default: 1
now_scan: 5
scheduled_scan: 14
free_shodan_scan: 1
В этом файле для каждой очереди фоновых процессов по сканированию можно задать количество фоновых процессов (фоновые процессы берут и выполняют задачи из соответствующей очереди).
При этом имеются следующие очереди фоновых процессов.
Сканирование через Shodan по сути таковым не является, данные о состоянии сетевых портов просто берутся с указанного сервиса (если они там есть).