The All Application Discovery Schedule is the OOTB schedule created when the Service Mapping plugin is installed. This schedule is used to update all service mapping maps which run nightly at 12am. There are a couple of system parameter which can be adjusted to improve performance of Service Mapping Discovery.
[How All Application Discovery Works]
Scheduled top-down discovery and re-discovery is performed with queue of tasks, which resides on table sa_endpoint_status.
Each endpoint that is scheduled for discovery, will have status Waiting, when it will be picked by a scheduler and changed to status “In progress”. At the end of the processing, when it’s discovered, the endpoint should move to status completed.
There is sysauto_script, called “Service Rediscovery Scheduler”, which picks scheduled endpoints from the queue and runs discovery on them.
It checks for available tasks once per 1 minute (can be configured).
To control load on the instance during discovery, these parameters may help:
- sa.max_concurrent_service_discovery_tasks (100) - Maximal number of discovery tasks (endpoint discoveries in top-down) to run at the same time. Once number of “in progress” tasks reaches this point, no new tasks will be scheduled until the existing ones pass to complete stage.
- sa.rediscovery.batch_size (100) - Number of discovery tasks executed in a single batch. Batch is one cycle of Service Rediscovery Scheduler, means once per 1 minute maximum of 100 tasks will be picked from the queue (if previous parameter allows). This configuration controls the speed at which system is loaded with “in progress” tasks.
How to figure out the numbers?
Generally, number of available workers for discovery can be calculated as number of available MIDs, multiplied by number of workers configured for each mid (there’s a property on MID for that).
However, not all MIDs can access all parts of the network. IP ranges and capabilities can bias this number.
The rule of thumb is not to allow more concurrent tasks (sa.max_concurrent_service_discovery_tasks) than total number of workers on all active MIDs.
And also, to allow some 3-5 minutes time interval so the tasks have enough time to close, before new ones will come (sa.rediscovery.batch_size), as each minute new ones will be added.
Other parameters may be useful if there is a problem with tasks that take too much time to complete:
- sa.discovery_task_timeout_min (240) - Maximum time for service mapping task in minutes (including waiting for execution in internal queues and ECC queue)
- sa.waiting_for_discovery_timeout_min (1440 min = 24 hrs) - We declare timeout if task in WaitingForDiscovery for more than this amount, the task will be reset (set as completed).