diff --git a/Lite/Services/RemoteCollectorService.cs b/Lite/Services/RemoteCollectorService.cs index fde3d467..ea1e79a2 100644 --- a/Lite/Services/RemoteCollectorService.cs +++ b/Lite/Services/RemoteCollectorService.cs @@ -80,7 +80,7 @@ public partial class RemoteCollectorService /// /// Connection timeout for SQL Server connections in seconds. /// - private const int ConnectionTimeoutSeconds = 15; + private const int ConnectionTimeoutSeconds = 5; /// /// Per-call timing fields set by each collector method. @@ -193,19 +193,28 @@ public async Task RunDueCollectorsAsync(CancellationToken cancellationToken = de return; } - _logger?.LogInformation("Running {CollectorCount} collectors for {ServerCount} servers", - dueCollectors.Count, enabledServers.Count); - var tasks = new List(); + int skippedOffline = 0; foreach (var server in enabledServers) { + var serverStatus = _serverManager.GetConnectionStatus(server.Id); + if (serverStatus.IsOnline == false) + { + skippedOffline++; + _logger?.LogDebug("Skipping offline server '{Server}'", server.DisplayName); + continue; + } + foreach (var collector in dueCollectors) { tasks.Add(RunCollectorAsync(server, collector.Name, cancellationToken)); } } + _logger?.LogInformation("Running {CollectorCount} collectors for {OnlineCount}/{TotalCount} servers ({SkippedCount} offline, skipped)", + dueCollectors.Count, enabledServers.Count - skippedOffline, enabledServers.Count, skippedOffline); + await Task.WhenAll(tasks); }