Update parametri connessione: NON scadono subito connessioni e non da warning così rapidi/ricorrenti
This commit is contained in:
@@ -35,10 +35,11 @@ namespace MagMan.Data.Admin
|
|||||||
public static bool CheckCreateUser(string username, string pwd, string dbName)
|
public static bool CheckCreateUser(string username, string pwd, string dbName)
|
||||||
{
|
{
|
||||||
bool answ = false;
|
bool answ = false;
|
||||||
|
int numUser = 0;
|
||||||
using (ServerAdminContext adbCtx = new ServerAdminContext())
|
using (ServerAdminContext adbCtx = new ServerAdminContext())
|
||||||
{
|
{
|
||||||
// ricerca utente...
|
// ricerca utente...
|
||||||
var numUser = adbCtx
|
numUser = adbCtx
|
||||||
.UserList
|
.UserList
|
||||||
.Where(x => x.User == username)
|
.Where(x => x.User == username)
|
||||||
.ToList()
|
.ToList()
|
||||||
@@ -54,7 +55,7 @@ namespace MagMan.Data.Admin
|
|||||||
adbCtx.Database.ExecuteSqlRaw(sqlCommand);
|
adbCtx.Database.ExecuteSqlRaw(sqlCommand);
|
||||||
sqlCommand = $"CREATE USER '{username}'@'localhost' IDENTIFIED BY '{pwd}';";
|
sqlCommand = $"CREATE USER '{username}'@'localhost' IDENTIFIED BY '{pwd}';";
|
||||||
adbCtx.Database.ExecuteSqlRaw(sqlCommand);
|
adbCtx.Database.ExecuteSqlRaw(sqlCommand);
|
||||||
sqlCommand = $"GRANT ALL ON *.* TO '{username}'@'localhost';";
|
sqlCommand = $"GRANT ALL PRIVILEGES ON {dbName}.* TO '{username}'@'localhost';";
|
||||||
adbCtx.Database.ExecuteSqlRaw(sqlCommand);
|
adbCtx.Database.ExecuteSqlRaw(sqlCommand);
|
||||||
sqlCommand = "FLUSH PRIVILEGES;";
|
sqlCommand = "FLUSH PRIVILEGES;";
|
||||||
adbCtx.Database.ExecuteSqlRaw(sqlCommand);
|
adbCtx.Database.ExecuteSqlRaw(sqlCommand);
|
||||||
|
|||||||
@@ -86,9 +86,9 @@ namespace MagMan.Data.Admin
|
|||||||
{
|
{
|
||||||
DATABASE_SERV = server;
|
DATABASE_SERV = server;
|
||||||
// tutto fisso x gestione utenti
|
// tutto fisso x gestione utenti
|
||||||
CONNECTION_STRING = $"Server={DATABASE_SERV};port=3306;database={DATABASE_NAME};uid={DATABASE_USER};pwd={DATABASE_PWD};sslmode=None;Connection Lifetime=60;Connection Timeout=15;DefaultCommandTimeout=30;";
|
CONNECTION_STRING = $"Server={DATABASE_SERV};port=3306;database={DATABASE_NAME};uid={DATABASE_USER};pwd={DATABASE_PWD};sslmode=None;Connection Lifetime=60;Connection Timeout=15;DefaultCommandTimeout=30;ConnectionIdleTimeout=30;ConnectionLifeTime=300;";
|
||||||
// stringa admin con utente admin dell'applicazione (già creato)...
|
// stringa admin con utente admin dell'applicazione (già creato)...
|
||||||
ADMIN_CONNECTION_STRING = $"Server={DATABASE_SERV};port=3306;database=mysql;uid=egalware;pwd=Egalware_24068!;sslmode=None;Connection Lifetime=60;Connection Timeout=15;DefaultCommandTimeout=30;";
|
ADMIN_CONNECTION_STRING = $"Server={DATABASE_SERV};port=3306;database=mysql;uid=egalware;pwd=Egalware_24068!;sslmode=None;Connection Lifetime=60;Connection Timeout=15;DefaultCommandTimeout=30;ConnectionIdleTimeout=30;ConnectionLifeTime=300;";
|
||||||
}
|
}
|
||||||
|
|
||||||
public static ServerVersion MysqlServerVersion(string connString)
|
public static ServerVersion MysqlServerVersion(string connString)
|
||||||
|
|||||||
@@ -52,7 +52,7 @@ namespace MagMan.Data.Admin
|
|||||||
#if DEBUG
|
#if DEBUG
|
||||||
//connString = "Server=localhost;port=3306;database=MagMan_Admin;uid=MagMan_DbUser;pwd=viad@nte16!;sslmode=None;";
|
//connString = "Server=localhost;port=3306;database=MagMan_Admin;uid=MagMan_DbUser;pwd=viad@nte16!;sslmode=None;";
|
||||||
//connString = "Server=mdb03.ufficio;port=3306;database=MagMan_Admin;uid=MagMan_DbUser;pwd=viad@nte16!;sslmode=None;";
|
//connString = "Server=mdb03.ufficio;port=3306;database=MagMan_Admin;uid=MagMan_DbUser;pwd=viad@nte16!;sslmode=None;";
|
||||||
connString = "Server=mdb.ufficio;port=3306;database=MagMan_Admin;uid=MagMan_DbUser;pwd=viad@nte16!;sslmode=None;Connection Lifetime=60;Connection Timeout=15;DefaultCommandTimeout=30;";
|
connString = "Server=mdb.ufficio;port=3306;database=MagMan_Admin;uid=MagMan_DbUser;pwd=viad@nte16!;sslmode=None;Connection Lifetime=60;Connection Timeout=15;DefaultCommandTimeout=30;ConnectionIdleTimeout=30;ConnectionLifeTime=300;";
|
||||||
#endif
|
#endif
|
||||||
var serverVersion = DbConfig.MysqlServerVersion(connString);
|
var serverVersion = DbConfig.MysqlServerVersion(connString);
|
||||||
optionsBuilder.UseMySql(connString, serverVersion);
|
optionsBuilder.UseMySql(connString, serverVersion);
|
||||||
|
|||||||
@@ -51,7 +51,7 @@ namespace MagMan.Data.Tenant
|
|||||||
public static string CustomerConnString(string server, int nKey)
|
public static string CustomerConnString(string server, int nKey)
|
||||||
{
|
{
|
||||||
string dbName = $"MagMan_{nKey:000000}";
|
string dbName = $"MagMan_{nKey:000000}";
|
||||||
return $"server={server};port=3306;database={dbName};uid={DATABASE_USER};pwd={DATABASE_PWD};sslmode=None;Connection Lifetime=60;Connection Timeout=15;DefaultCommandTimeout=30;";
|
return $"server={server};port=3306;database={dbName};uid={DATABASE_USER};pwd={DATABASE_PWD};sslmode=None;Connection Lifetime=60;Connection Timeout=15;DefaultCommandTimeout=30;ConnectionIdleTimeout=30;ConnectionLifeTime=300;";
|
||||||
//LoadBalance=RoundRobin;Pooling=true;
|
//LoadBalance=RoundRobin;Pooling=true;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -67,7 +67,7 @@ namespace MagMan.Data.Tenant
|
|||||||
{
|
{
|
||||||
DATABASE_SERV = server;
|
DATABASE_SERV = server;
|
||||||
DATABASE_NAME = $"MagMan_{nKey:000000}";
|
DATABASE_NAME = $"MagMan_{nKey:000000}";
|
||||||
CONNECTION_STRING = $"server={DATABASE_SERV};port=3306;database={DATABASE_NAME};uid={DATABASE_USER};pwd={DATABASE_PWD};sslmode=None;Connection Lifetime=60;Connection Timeout=15;DefaultCommandTimeout=30;";
|
CONNECTION_STRING = $"server={DATABASE_SERV};port=3306;database={DATABASE_NAME};uid={DATABASE_USER};pwd={DATABASE_PWD};sslmode=None;Connection Lifetime=60;Connection Timeout=15;DefaultCommandTimeout=30;ConnectionIdleTimeout=30;ConnectionLifeTime=300;";
|
||||||
//LoadBalance=RoundRobin;Pooling=true;
|
//LoadBalance=RoundRobin;Pooling=true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -76,7 +76,7 @@ namespace MagMan.Data.Tenant
|
|||||||
#if DEBUG
|
#if DEBUG
|
||||||
//connString = "Server=localhost;port=3306;database=MagMan_000470;uid=MagMan_DbUser;pwd=viad@nte16!;sslmode=None;";
|
//connString = "Server=localhost;port=3306;database=MagMan_000470;uid=MagMan_DbUser;pwd=viad@nte16!;sslmode=None;";
|
||||||
////connString = "Server=mdb03.ufficio;port=3306;database=MagMan_000470;uid=MagMan_DbUser;pwd=viad@nte16!;sslmode=None;";
|
////connString = "Server=mdb03.ufficio;port=3306;database=MagMan_000470;uid=MagMan_DbUser;pwd=viad@nte16!;sslmode=None;";
|
||||||
connString = "Server=mdb.ufficio;port=3306;database=MagMan_000470;uid=MagMan_DbUser;pwd=viad@nte16!;sslmode=None;Connection Lifetime=60;Connection Timeout=15;DefaultCommandTimeout=30;";
|
connString = "Server=mdb.ufficio;port=3306;database=MagMan_000470;uid=MagMan_DbUser;pwd=viad@nte16!;sslmode=None;Connection Lifetime=60;Connection Timeout=15;DefaultCommandTimeout=30;ConnectionIdleTimeout=30;ConnectionLifeTime=300;";
|
||||||
#endif
|
#endif
|
||||||
var serverVersion = DbConfig.MysqlServerVersion(connString);
|
var serverVersion = DbConfig.MysqlServerVersion(connString);
|
||||||
optionsBuilder.UseMySql(connString, serverVersion, options => options.EnableRetryOnFailure(
|
optionsBuilder.UseMySql(connString, serverVersion, options => options.EnableRetryOnFailure(
|
||||||
|
|||||||
+30
-26
@@ -1,13 +1,14 @@
|
|||||||
using MagMan.Data.Tenant.DbModels;
|
using MagMan.Data;
|
||||||
using MagMan.Data;
|
using MagMan.Data.Admin;
|
||||||
|
using MagMan.Data.Admin.DbModels;
|
||||||
|
using MagMan.Data.Tenant;
|
||||||
|
using MagMan.Data.Tenant.DbModels;
|
||||||
|
using Microsoft.EntityFrameworkCore;
|
||||||
using Microsoft.Extensions.Diagnostics.HealthChecks;
|
using Microsoft.Extensions.Diagnostics.HealthChecks;
|
||||||
|
using MySqlConnector;
|
||||||
using NLog;
|
using NLog;
|
||||||
using Org.BouncyCastle.Pqc.Crypto.Lms;
|
using Org.BouncyCastle.Pqc.Crypto.Lms;
|
||||||
using System.Net.NetworkInformation;
|
using System.Net.NetworkInformation;
|
||||||
using MagMan.Data.Admin;
|
|
||||||
using MagMan.Data.Admin.DbModels;
|
|
||||||
using Microsoft.EntityFrameworkCore;
|
|
||||||
using MagMan.Data.Tenant;
|
|
||||||
|
|
||||||
namespace MagMan.UI.Health
|
namespace MagMan.UI.Health
|
||||||
{
|
{
|
||||||
@@ -19,6 +20,7 @@ namespace MagMan.UI.Health
|
|||||||
|
|
||||||
#endregion Private Fields
|
#endregion Private Fields
|
||||||
|
|
||||||
|
|
||||||
#region Public Methods
|
#region Public Methods
|
||||||
|
|
||||||
public static async Task<HealthCheckResult> DbIdentity(string dbName)
|
public static async Task<HealthCheckResult> DbIdentity(string dbName)
|
||||||
@@ -30,8 +32,9 @@ namespace MagMan.UI.Health
|
|||||||
var healthCheckData = new Dictionary<string, object>();
|
var healthCheckData = new Dictionary<string, object>();
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
string sqlQuery = $"SELECT 'AspNetUsers' AS TableName, COUNT(*) AS Count FROM information_schema.tables WHERE table_schema = '{dbName}' AND table_name = 'AspNetUsers' LIMIT 1;";
|
var dbParam = new MySqlParameter("dbName", dbName);
|
||||||
var table = await Task.FromResult(appDb.DbSetCounts.FromSqlRaw(sqlQuery).ToList());
|
string sqlQuery = $"SELECT 'AspNetUsers' AS TableName, COUNT(*) AS Count FROM information_schema.tables WHERE table_schema = @dbName AND table_name = 'AspNetUsers' LIMIT 1;";
|
||||||
|
var table = await appDb.DbSetCounts.FromSqlRaw(sqlQuery, dbParam).ToListAsync();
|
||||||
|
|
||||||
// provo a controllare se ho tab utenti
|
// provo a controllare se ho tab utenti
|
||||||
if (table != null && table.Count > 0)
|
if (table != null && table.Count > 0)
|
||||||
@@ -59,9 +62,9 @@ namespace MagMan.UI.Health
|
|||||||
var healthCheckData = new Dictionary<string, object>();
|
var healthCheckData = new Dictionary<string, object>();
|
||||||
using (MultiTenantContext localDbCtx = new MultiTenantContext())
|
using (MultiTenantContext localDbCtx = new MultiTenantContext())
|
||||||
{
|
{
|
||||||
var dbCount = localDbCtx
|
var dbCount = await localDbCtx
|
||||||
.DbSetCustomers
|
.DbSetCustomers
|
||||||
.Count();
|
.CountAsync();
|
||||||
if (dbCount > 0)
|
if (dbCount > 0)
|
||||||
{
|
{
|
||||||
description = $"Check CUSTOMERS table, found {dbCount} records";
|
description = $"Check CUSTOMERS table, found {dbCount} records";
|
||||||
@@ -76,27 +79,27 @@ namespace MagMan.UI.Health
|
|||||||
|
|
||||||
public static async Task<HealthCheckResult> DbUserRoot(string dbName)
|
public static async Task<HealthCheckResult> DbUserRoot(string dbName)
|
||||||
{
|
{
|
||||||
using (var adminDb = new ServerAdminContext())
|
List<MagMan.Data.Admin.DbModels.UserPriv> userList = new List<MagMan.Data.Admin.DbModels.UserPriv>();
|
||||||
|
string description = "Try check MySql User table";
|
||||||
|
var healthCheckData = new Dictionary<string, object>();
|
||||||
|
try
|
||||||
{
|
{
|
||||||
string description = "Try check MySql User table";
|
// provo a controllare se ho tab utenti
|
||||||
List<MagMan.Data.Admin.DbModels.UserPriv> userList = new List<MagMan.Data.Admin.DbModels.UserPriv>();
|
using (var adminDb = new ServerAdminContext())
|
||||||
var healthCheckData = new Dictionary<string, object>();
|
|
||||||
try
|
|
||||||
{
|
{
|
||||||
// provo a controllare se ho tab utenti
|
userList = await adminDb.UserList.ToListAsync();
|
||||||
userList = await Task.FromResult(adminDb.UserList.ToList()).ConfigureAwait(false);
|
|
||||||
if (userList.Count > 0)
|
|
||||||
{
|
|
||||||
description = $"Check MySql User table, found {userList.Count} records";
|
|
||||||
return HealthCheckResult.Healthy(description, healthCheckData);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
catch (Exception exc)
|
if (userList.Count > 0)
|
||||||
{
|
{
|
||||||
Log.Error(exc, "Errore in esecuzione DbUserRoot");
|
description = $"Check MySql User table, found {userList.Count} records";
|
||||||
|
return HealthCheckResult.Healthy(description, healthCheckData);
|
||||||
}
|
}
|
||||||
return HealthCheckResult.Unhealthy(description + $" {dbName}", null, healthCheckData);
|
|
||||||
}
|
}
|
||||||
|
catch (Exception exc)
|
||||||
|
{
|
||||||
|
Log.Error(exc, "Errore in esecuzione DbUserRoot");
|
||||||
|
}
|
||||||
|
return HealthCheckResult.Unhealthy(description + $" {dbName}", null, healthCheckData);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static async Task<HealthCheckResult> PingCheck(string hostName)
|
public static async Task<HealthCheckResult> PingCheck(string hostName)
|
||||||
@@ -105,7 +108,8 @@ namespace MagMan.UI.Health
|
|||||||
{
|
{
|
||||||
return HealthCheckResult.Unhealthy($"Wrong Hostname: {hostName}");
|
return HealthCheckResult.Unhealthy($"Wrong Hostname: {hostName}");
|
||||||
}
|
}
|
||||||
else {
|
else
|
||||||
|
{
|
||||||
using (var thePing = new Ping())
|
using (var thePing = new Ping())
|
||||||
{
|
{
|
||||||
var pingResult = await thePing.SendPingAsync(hostName);
|
var pingResult = await thePing.SendPingAsync(hostName);
|
||||||
|
|||||||
@@ -2,7 +2,7 @@
|
|||||||
|
|
||||||
<PropertyGroup>
|
<PropertyGroup>
|
||||||
<TargetFramework>net6.0</TargetFramework>
|
<TargetFramework>net6.0</TargetFramework>
|
||||||
<Version>1.0.2509.2219</Version>
|
<Version>1.0.2509.2309</Version>
|
||||||
<Nullable>enable</Nullable>
|
<Nullable>enable</Nullable>
|
||||||
<ImplicitUsings>enable</ImplicitUsings>
|
<ImplicitUsings>enable</ImplicitUsings>
|
||||||
<EnableNETAnalyzers>true</EnableNETAnalyzers>
|
<EnableNETAnalyzers>true</EnableNETAnalyzers>
|
||||||
|
|||||||
@@ -60,19 +60,20 @@ string connStringDB = MagMan.Data.Admin.DbConfig.CONNECTION_STRING;
|
|||||||
*
|
*
|
||||||
* */
|
* */
|
||||||
// abilitazione blobale healthCheck...
|
// abilitazione blobale healthCheck...
|
||||||
bool enabHealth = builder.Configuration.GetValue<bool>("OptConf:EnableHealth");
|
bool enabHealth = builder.Configuration.GetValue<bool>("OptConf:EnableHealth2");
|
||||||
if (enabHealth)
|
if (enabHealth)
|
||||||
{
|
{
|
||||||
//string redisConnCheck = "redis.ufficio:26379, serviceName=devel, DefaultDatabase=13, connectTimeout=2000, syncTimeout=2000, asyncTimeout=2000, abortConnect=false, ssl=false, allowAdmin=true";
|
//string redisConnCheck = "redis.ufficio:26379, serviceName=devel, DefaultDatabase=14, connectTimeout=2000, syncTimeout=2000, asyncTimeout=2000, abortConnect=false, ssl=false, allowAdmin=true";
|
||||||
string redisConnCheck = "redis.ufficio:6378,DefaultDatabase=13,connectTimeout=2000,syncTimeout=2000,asyncTimeout=2000,abortConnect=false,ssl=false,allowAdmin=true";
|
string redisConnCheck = "redis.ufficio:6378, DefaultDatabase=14, connectTimeout=2000, syncTimeout=2000, asyncTimeout=2000, abortConnect=false, ssl=false, allowAdmin=true";
|
||||||
builder.Services.AddHealthChecks()
|
builder.Services.AddHealthChecks()
|
||||||
.AddMySql(connStringDB, "MySql instance")
|
.AddMySql(connStringDB, "MySql instance")
|
||||||
.AddAsyncCheck($"DB PING ({dbServerAddr})", () => MagMan.UI.Health.Checks.PingCheck(dbServerAddr))
|
.AddAsyncCheck($"DB PING ({dbServerAddr})", () => MagMan.UI.Health.Checks.PingCheck(dbServerAddr))
|
||||||
.AddAsyncCheck($"Redis PING ({redisSrvAddr})", () => MagMan.UI.Health.Checks.PingCheck(redisSrvAddr))
|
.AddAsyncCheck($"Redis PING ({redisSrvAddr})", () => MagMan.UI.Health.Checks.PingCheck(redisSrvAddr))
|
||||||
// 512 MB max allocated memory
|
// 512 MB max allocated memory
|
||||||
.AddProcessAllocatedMemoryHealthCheck(512, "Max Process memory (<512MB)", failureStatus: HealthStatus.Degraded)
|
.AddProcessAllocatedMemoryHealthCheck(512, "Max Process memory (<512MB)", failureStatus: HealthStatus.Degraded)
|
||||||
//.AddRedis(builder.Configuration.GetConnectionString("Redis"), "Redis", failureStatus: HealthStatus.Degraded)
|
//.AddRedis(connStringRedis, "Redis", failureStatus: HealthStatus.Degraded)
|
||||||
.AddRedis(redisConnCheck, "Redis", failureStatus: HealthStatus.Degraded)
|
.AddRedis(redisConnCheck, "Redis", failureStatus: HealthStatus.Degraded)
|
||||||
|
//.AddRedis(builder.Configuration.GetConnectionString("Redis"), "Redis", failureStatus: HealthStatus.Degraded)
|
||||||
.AddAsyncCheck($"MySql Identity", () => MagMan.UI.Health.Checks.DbIdentity(MagMan.Data.Admin.DbConfig.DATABASE_NAME))
|
.AddAsyncCheck($"MySql Identity", () => MagMan.UI.Health.Checks.DbIdentity(MagMan.Data.Admin.DbConfig.DATABASE_NAME))
|
||||||
.AddAsyncCheck($"MySql Customers", () => MagMan.UI.Health.Checks.CustomersCount())
|
.AddAsyncCheck($"MySql Customers", () => MagMan.UI.Health.Checks.CustomersCount())
|
||||||
;
|
;
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
<body>
|
<body>
|
||||||
<i>MagMan - Wood Warehouse Management System</i>
|
<i>MagMan - Wood Warehouse Management System</i>
|
||||||
<h4>Versione: 1.0.2509.2219</h4>
|
<h4>Versione: 1.0.2509.2309</h4>
|
||||||
<br /> Note di rilascio:
|
<br /> Note di rilascio:
|
||||||
<ul>
|
<ul>
|
||||||
<li>
|
<li>
|
||||||
|
|||||||
@@ -1 +1 @@
|
|||||||
1.0.2509.2219
|
1.0.2509.2309
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8"?>
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
<item>
|
<item>
|
||||||
<version>1.0.2509.2219</version>
|
<version>1.0.2509.2309</version>
|
||||||
<url>http://nexus.steamware.net/repository/SWS/MagMan/stable/0/MagMan.UI.zip</url>
|
<url>http://nexus.steamware.net/repository/SWS/MagMan/stable/0/MagMan.UI.zip</url>
|
||||||
<changelog>http://nexus.steamware.net/repository/SWS/MagMan/stable/0/ChangeLog.html</changelog>
|
<changelog>http://nexus.steamware.net/repository/SWS/MagMan/stable/0/ChangeLog.html</changelog>
|
||||||
<mandatory>false</mandatory>
|
<mandatory>false</mandatory>
|
||||||
|
|||||||
Reference in New Issue
Block a user