Servers should be activated, running, configured for queue processing and have non zero values for MaxQueueLength
and MaxActiveJobs.
select ServerID, convert(nvarchar(50), Hostname) as Hostname, ss.Name as ServerState, MaxQueueLength, MaxActiveJobs, IsQueueProcessingEnabled from config.t_Server s inner join config.t_ServerState ss on s.StateID = ss.ServerStateID |
.
Each location must be enabled and linked to to a scanning server. The MaxScanningCount
dictates how many targets in the location can be scanned at one time.
select l.Name as Location, l.IsEnabled, l.MaxScanningCount, s.ServerId, s.Version, s.Hostname from config.t_Location l left join config.t__Location_Server ls on l.LocationId = ls.LocationID left join config.t_Server s on ls.ServerID = s.ServerID left join config.t_ServerState ss on s.StateID = ss.ServerStateID |
If there is a scan window for the location, jobs will only be served during this time. If the scan window is an exclusion, there needs to be a non-exclusion scan window for jobs to be served.
select sw.*, swwd.WeeklyDays, l.LocationId, l.Name from config.t_ScanWindow sw left join config.t_ScanWindowWeeklyDays swwd on sw.ScanWindowID = swwd.ScanWindowID left join config.t_Location l on sw.LocationID = l.LocationID |
.
The project should be running...
select p.Name as Project, ps.Name as [Status] from config.t_Project p inner join config.t_ProjectState ps on p.ProjectStateID = ps.ProjectStateID |
.
Current Snapshot of Incomplete Jobs
select s.ServerID, convert(nvarchar(50), s.Hostname) as Hostname, tp.Name as JobPhase, ts.Name as JobStatus, j.JobId, ParentJobID, convert(nvarchar(50), j.Hostname) as Hostname, j.IPAddressBinary, IsComplete, StartDate, EndDate, DATEDIFF(hh, StartDate, getDate()) as 'Duration {Hours)', q.JobStatusID, ' QUEUE DATA --> ', js.name as QueueStatus, DisabledUntil, [Priority], Source, QueueId, IgnoreConfiguredIPs from jobs.t_Job j inner join config.t_Server s on j.ServerID = s.ServerID inner join jobs.t_TargetStatus ts on j.TargetStatusID= ts.TargetStatusID inner join jobs.t_TargetPhase tp on ts.TargetPhaseID = tp.TargetPhaseID inner join jobs.t_Queue q on j.JobId = q.JobID inner join jobs.t_JobStatus js on q.JobStatusID = js.JobStatusID where tp.TargetPhaseID = @PHASE_IN_PROGRESS or IsComplete = 0 |
.
Let it run for about 5 minutes. You should see repeated entries for jobs.QueueStep2_SetJobStatus and
If you don't see this, it's likely the threads have fallen over and a service re-start may be required.jobs.Targets_Serve
.
.
Queue processing is suspended when the average resource usage over 5 minutes on the scanning server exceeds the levels configured in Administration > Scanning Servers. It will only resume when average resource usage has fallen below the configured limits for 5 minutes. To determine if a server is in breach of these limits execute the following query. The output results are SQL Statements to check the performance limits for each individual server. Copy and paste the results into SQL Management Studio and execute that. If the value in any of the Is<X>InBreach
columns is 1 then processing queue processing and job serving have been suspended. Also check for the following text in the logs: Queue processing is suspended.
select '/* Server: ' + s.HostName + ' */ exec [config].[Performance_Check] ''' + convert(nvarchar(50), InstallationID) + ''' -- Server: ' + s.Hostname from config.t_Server s |
Search the Service logs for the text iQSonar Job Poll
. How much information you see here will depend on the level of logging (configuration for this not in scope here). Look for errors or warnings - but also look for messages similar to any of the following...