This commit is contained in:
2
.vscode/launch.json
vendored
2
.vscode/launch.json
vendored
@@ -49,7 +49,7 @@
|
||||
"AYANOVA_USE_URLS": "http://*:7575;",
|
||||
"AYANOVA_FOLDER_USER_FILES": "c:\\temp\\RavenTestData\\userfiles",
|
||||
"AYANOVA_FOLDER_BACKUP_FILES": "c:\\temp\\RavenTestData\\backupfiles",
|
||||
"AYANOVA_SERVER_TEST_MODE":"true",
|
||||
"AYANOVA_SERVER_TEST_MODE":"false",
|
||||
"AYANOVA_SERVER_TEST_MODE_SEEDLEVEL":"small",
|
||||
"AYANOVA_SERVER_TEST_MODE_TZ_OFFSET":"-7",
|
||||
"AYANOVA_BACKUP_PG_DUMP_PATH":"C:\\data\\code\\PostgreSQLPortable_12.0\\App\\PgSQL\\bin\\"
|
||||
|
||||
@@ -728,4 +728,14 @@ JAVASCRIPT DOWNSAMPLING TOOL
|
||||
// if(ministats.Count>0){
|
||||
// var v=ministats.Count;
|
||||
// }
|
||||
// }
|
||||
// }
|
||||
|
||||
MEMORY LEAK DIAGNOSIS URLS
|
||||
https://docs.microsoft.com/en-us/dotnet/core/diagnostics/debug-memory-leak
|
||||
https://docs.microsoft.com/en-us/dotnet/core/diagnostics/dotnet-counters
|
||||
https://docs.microsoft.com/en-us/dotnet/core/diagnostics/dotnet-dump
|
||||
https://docs.microsoft.com/en-us/dotnet/core/diagnostics/dotnet-trace
|
||||
|
||||
Might be doing GC Counts incorrectly, they don't sync up with the dotnet-counters tool which shows them drop back to zero regularly when I stop burn test
|
||||
https://michaelscodingspot.com/ways-to-cause-memory-leaks-in-dotnet/
|
||||
https://bennettadelson.wordpress.com/2013/04/11/using-perfview-to-diagnose-a-net-memory-leak-2/
|
||||
|
||||
@@ -51,6 +51,7 @@ namespace AyaNova.Api.Controllers
|
||||
|
||||
#if (DEBUG)
|
||||
[HttpGet("collect")]
|
||||
[AllowAnonymous]
|
||||
public ActionResult GetCollect()
|
||||
{
|
||||
GC.Collect();
|
||||
@@ -59,6 +60,25 @@ namespace AyaNova.Api.Controllers
|
||||
|
||||
return Ok();
|
||||
}
|
||||
|
||||
|
||||
[HttpGet("hammer")]
|
||||
[AllowAnonymous]
|
||||
public async Task<IActionResult> GetHammer()
|
||||
{
|
||||
//test allocation and cleanup
|
||||
for (int x = 0; x < 100000; x++)
|
||||
{
|
||||
AyContext ct = AyaNova.Util.ServiceProviderProvider.DBContext;
|
||||
var v=await ct.Widget.Where(z=>z.Serial<100).ToListAsync();
|
||||
// int i = await ct.Database.ExecuteSqlRawAsync($"select * from aglobalbizsettings");
|
||||
}
|
||||
|
||||
return Ok();
|
||||
}
|
||||
|
||||
|
||||
|
||||
#endif
|
||||
|
||||
/// <summary>
|
||||
|
||||
@@ -49,21 +49,22 @@ namespace AyaNova
|
||||
{
|
||||
_newLog.LogDebug("Initializing services...");
|
||||
|
||||
_newLog.LogDebug("Profiler");
|
||||
//https://dotnetthoughts.net/using-miniprofiler-in-aspnetcore-webapi/
|
||||
services.AddMemoryCache();
|
||||
services.AddMiniProfiler(options =>
|
||||
{
|
||||
options.RouteBasePath = "/profiler";
|
||||
//in testing only ignorepaths was reliable and worked and docs say it prevents any profiling at all
|
||||
options.IgnorePath("/auth").IgnorePath("/user").IgnorePath("/docs");
|
||||
options.ResultsAuthorize = request =>
|
||||
{
|
||||
if (request.HttpContext.Items["AY_PROFILER_ALLOWED"] != null)
|
||||
return true;
|
||||
return false;
|
||||
};
|
||||
}).AddEntityFramework();
|
||||
// _newLog.LogDebug("Profiler");
|
||||
// //https://dotnetthoughts.net/using-miniprofiler-in-aspnetcore-webapi/
|
||||
// services.AddMemoryCache();
|
||||
// services.AddMiniProfiler(options =>
|
||||
// {
|
||||
// options.RouteBasePath = "/profiler";
|
||||
// //in testing only ignorepaths was reliable and worked and docs say it prevents any profiling at all
|
||||
// options.IgnorePath("/auth").IgnorePath("/user").IgnorePath("/docs");
|
||||
// options.ResultsAuthorize = request =>
|
||||
// {
|
||||
// if (request.HttpContext.Items["AY_PROFILER_ALLOWED"] != null)
|
||||
// return true;
|
||||
// return false;
|
||||
// };
|
||||
// //options.ShouldProfile = request => false;
|
||||
// }).AddEntityFramework();
|
||||
|
||||
|
||||
//Server state service for shutting people out of api
|
||||
@@ -473,7 +474,7 @@ namespace AyaNova
|
||||
|
||||
|
||||
_newLog.LogDebug("Profiler");
|
||||
app.UseMiniProfiler();
|
||||
// app.UseMiniProfiler();
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -28,6 +28,10 @@ namespace AyaNova.Util
|
||||
{
|
||||
get
|
||||
{
|
||||
// System.Diagnostics.Debug.WriteLine((new System.Diagnostics.StackTrace()).GetFrame(1).GetMethod().Name);
|
||||
|
||||
// System.Diagnostics.Debug.WriteLine((new System.Diagnostics.StackTrace()).ToString().Substring(56,80));
|
||||
|
||||
return Scope.ServiceProvider.GetRequiredService<AyContext>();
|
||||
}
|
||||
}
|
||||
@@ -39,7 +43,7 @@ namespace AyaNova.Util
|
||||
return Scope.ServiceProvider.GetRequiredService<AyaNova.Api.ControllerHelpers.ApiServerState>();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// https://docs.microsoft.com/en-us/aspnet/core/fundamentals/http-requests?view=aspnetcore-3.1
|
||||
internal static System.Net.Http.IHttpClientFactory HttpClientFactory
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user