only send system info from main server

This commit is contained in:
Stanley Dimant
2022-09-08 20:46:14 +02:00
parent 7672df275a
commit 7ab7e13d96
3 changed files with 27 additions and 17 deletions

View File

@@ -22,8 +22,8 @@ namespace MareSynchronosServer
var services = scope.ServiceProvider; var services = scope.ServiceProvider;
using var context = services.GetRequiredService<MareDbContext>(); using var context = services.GetRequiredService<MareDbContext>();
var noDbActions = Environment.GetEnvironmentVariable("NODBACTIONS"); var secondaryServer = Environment.GetEnvironmentVariable("SECONDARY_SERVER");
if (string.IsNullOrEmpty(noDbActions) || noDbActions == "0") if (string.IsNullOrEmpty(secondaryServer) || secondaryServer == "0")
{ {
context.Database.Migrate(); context.Database.Migrate();
context.SaveChanges(); context.SaveChanges();

View File

@@ -123,7 +123,10 @@ namespace MareSynchronosServer
var redis = mareConfig.GetValue<string>("RedisConnectionString", string.Empty); var redis = mareConfig.GetValue<string>("RedisConnectionString", string.Empty);
if (!string.IsNullOrEmpty(redis)) if (!string.IsNullOrEmpty(redis))
{ {
signalRserviceBuilder.AddStackExchangeRedis(redis); signalRserviceBuilder.AddStackExchangeRedis(redis, options =>
{
options.Configuration.ChannelPrefix = "MareSynchronos";
});
} }
} }

View File

@@ -6,6 +6,7 @@ using MareSynchronos.API;
using MareSynchronosServer.Hubs; using MareSynchronosServer.Hubs;
using MareSynchronosShared.Data; using MareSynchronosShared.Data;
using MareSynchronosShared.Metrics; using MareSynchronosShared.Metrics;
using MareSynchronosShared.Models;
using MareSynchronosShared.Protos; using MareSynchronosShared.Protos;
using Microsoft.AspNetCore.SignalR; using Microsoft.AspNetCore.SignalR;
using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.DependencyInjection;
@@ -45,28 +46,34 @@ public class SystemInfoService : IHostedService, IDisposable
ThreadPool.GetAvailableThreads(out int workerThreads, out int ioThreads); ThreadPool.GetAvailableThreads(out int workerThreads, out int ioThreads);
_logger.LogInformation("ThreadPool: {workerThreads} workers available, {ioThreads} IO workers available", workerThreads, ioThreads); _logger.LogInformation("ThreadPool: {workerThreads} workers available, {ioThreads} IO workers available", workerThreads, ioThreads);
using var scope = _services.CreateScope();
using var db = scope.ServiceProvider.GetService<MareDbContext>()!;
_mareMetrics.SetGaugeTo(MetricsAPI.GaugeAvailableWorkerThreads, workerThreads); _mareMetrics.SetGaugeTo(MetricsAPI.GaugeAvailableWorkerThreads, workerThreads);
_mareMetrics.SetGaugeTo(MetricsAPI.GaugeAvailableIOWorkerThreads, ioThreads); _mareMetrics.SetGaugeTo(MetricsAPI.GaugeAvailableIOWorkerThreads, ioThreads);
var users = db.Users.Count(c => c.CharacterIdentification != null);
SystemInfoDto = new SystemInfoDto() var secondaryServer = Environment.GetEnvironmentVariable("SECONDARY_SERVER");
if (secondaryServer == "1")
{ {
CacheUsage = 0, using var scope = _services.CreateScope();
CpuUsage = 0, using var db = scope.ServiceProvider.GetService<MareDbContext>()!;
RAMUsage = 0,
NetworkIn = 0,
NetworkOut = 0,
OnlineUsers = users,
UploadedFiles = 0
};
_hubContext.Clients.All.SendAsync(Api.OnUpdateSystemInfo, SystemInfoDto); var users = db.Users.Count(c => c.CharacterIdentification != null);
SystemInfoDto = new SystemInfoDto()
{
CacheUsage = 0,
CpuUsage = 0,
RAMUsage = 0,
NetworkIn = 0,
NetworkOut = 0,
OnlineUsers = users,
UploadedFiles = 0
};
_hubContext.Clients.All.SendAsync(Api.OnUpdateSystemInfo, SystemInfoDto);
}
} }
public Task StopAsync(CancellationToken cancellationToken) public Task StopAsync(CancellationToken cancellationToken)
{ {
_timer?.Change(Timeout.Infinite, 0); _timer?.Change(Timeout.Infinite, 0);