diff --git a/frameworks/sisk/Program.cs b/frameworks/sisk/Program.cs index 6d6ec4b3..4f669524 100644 --- a/frameworks/sisk/Program.cs +++ b/frameworks/sisk/Program.cs @@ -1,113 +1,53 @@ +using System.Diagnostics; using System.Net.Http.Json; - using System.Text.Json; -using sisk; using Npgsql; +using sisk; using Sisk.Cadente.CoreEngine; using Sisk.Core.Http; +using Sisk.Core.Http.FileSystem; using Sisk.Core.Routing; -var server = HttpServer.CreateBuilder() - .UseEngine() - .UseListeningPort(new ListeningPort(false, "0.0.0.0", 8080)) - .UseMinimalConfiguration(); - -// Pre-load static files with pre-compressed variants -var staticMimeTypes = new Dictionary -{ - [".css"] = "text/css", [".js"] = "application/javascript", [".html"] = "text/html", - [".woff2"] = "font/woff2", [".svg"] = "image/svg+xml", [".webp"] = "image/webp", [".json"] = "application/json", -}; -var staticCache = new Dictionary(); -if (Directory.Exists("/data/static")) -{ - foreach (var file in Directory.GetFiles("/data/static")) - { - var name = Path.GetFileName(file); - if (name.EndsWith(".br") || name.EndsWith(".gz")) continue; - var ext = Path.GetExtension(name); - var ct = staticMimeTypes.GetValueOrDefault(ext, "application/octet-stream"); - var brPath = file + ".br"; - var gzPath = file + ".gz"; - staticCache[name] = ( - File.ReadAllBytes(file), - File.Exists(brPath) ? File.ReadAllBytes(brPath) : null, - File.Exists(gzPath) ? File.ReadAllBytes(gzPath) : null, - ct - ); - } -} - -Router router = new Router(); - -router.MapGet("/static/", r => -{ - var filename = r.RouteParameters["filename"].ToString(); - if (!staticCache.TryGetValue(filename, out var sf)) - return new HttpResponse(404); - var ae = r.Headers.AcceptEncoding ?? ""; - byte[] body; - string? encoding = null; - if (sf.br != null && ae.Contains("br")) - { - body = sf.br; - encoding = "br"; - } - else if (sf.gz != null && ae.Contains("gzip")) - { - body = sf.gz; - encoding = "gzip"; - } - else - { - body = sf.data; - } - var resp = new HttpResponse(200); - resp.Content = new ByteArrayContent(body); - resp.Headers.Add("Content-Type", sf.contentType); - if (encoding != null) resp.Headers.Add("Content-Encoding", encoding); - return resp; -}); - -router.MapGet("/baseline11", r => new HttpResponse(Sum(r))); -router.MapPost("/baseline11", r => new HttpResponse(Sum(r))); +var server = HttpServer.CreateBuilder () + .UseEngine () + .UseListeningPort ( new ListeningPort ( false, "0.0.0.0", 8080 ) ) + .UseMinimalConfiguration () + .UseConfiguration ( config => { + config.EnableAutomaticResponseCompression = true; + } ); -router.MapGet("/baseline2", r => new HttpResponse(Sum(r))); +Router router = new Router (); -router.MapGet("/pipeline", r => new HttpResponse("ok")); +var staticRoute = HttpFileServer.CreateServingRoute ( "/static", new HttpFileServerHandler () { + RootDirectoryPath = "/data/static", + AllowDirectoryListing = false +} ); -router.MapPost("/upload", r => -{ - var buffer = new byte[8192]; +router.SetRoute ( staticRoute ); - var body = r.GetRequestStream(); +router.MapGet ( "/baseline11", r => new HttpResponse ( Sum ( r ) ) ); +router.MapPost ( "/baseline11", r => new HttpResponse ( Sum ( r ) ) ); - var read = 0; +router.MapGet ( "/baseline2", r => new HttpResponse ( Sum ( r ) ) ); - long total = 0; +router.MapGet ( "/pipeline", r => new HttpResponse ( "ok" ) ); - while ((read = body.Read(buffer, 0, buffer.Length)) > 0) - { - total += read; - } +router.MapPost ( "/upload", r => { + var body = r.GetBodyContents (); + return new HttpResponse ( body.Length.ToString () ); +} ); - return new HttpResponse(total.ToString()); -}); +var datasetItems = LoadItems (); -var datasetItems = LoadItems(); - -router.MapGet("/json/", r => -{ - int count = Math.Clamp(int.Parse(r.RouteParameters["count"].ToString()), 0, datasetItems!.Count); +router.MapGet ( "/json/", r => { + int count = Math.Clamp ( int.Parse ( r.RouteParameters [ "count" ].GetString () ), 0, datasetItems!.Count ); int m = 1; - if (r.Query.TryGetValue("m", out var mStr)) { int.TryParse(mStr, out m); if (m == 0) m = 1; } - var processed = new ProcessedItem[count]; - - for (int i = 0; i < count; i++) - { - var d = datasetItems[i]; - processed[i] = new ProcessedItem - { + if (r.Query.TryGetValue ( "m", out var mStr )) { int.TryParse ( mStr, out m ); if (m == 0) m = 1; } + var processed = new ProcessedItem [ count ]; + + for (int i = 0; i < count; i++) { + var d = datasetItems [ i ]; + processed [ i ] = new ProcessedItem { Id = d.Id, Name = d.Name, Category = d.Category, @@ -120,99 +60,93 @@ }; } - return new HttpResponse - { - Content = JsonContent.Create(new ListWithCount(processed.ToList())) + return new HttpResponse { + Content = JsonContent.Create ( new ListWithCount ( processed.ToList () ) ) }; -}); - -var pgDataSource = OpenPgPool(); - -router.MapGet("/async-db", async (HttpRequest request) => -{ - var min = request.Query.TryGetValue("min", out var vmin) ? vmin.GetInteger() : 10; - var max = request.Query.TryGetValue("max", out var vmax) ? vmax.GetInteger() : 50; - var limit = request.Query.TryGetValue("limit", out var vlim) ? Math.Clamp(vlim.GetInteger(), 1, 50) : 50; - - await using var cmd = pgDataSource.CreateCommand( - "SELECT id, name, category, price, quantity, active, tags, rating_score, rating_count FROM items WHERE price BETWEEN $1 AND $2 LIMIT $3"); - cmd.Parameters.AddWithValue(min); - cmd.Parameters.AddWithValue(max); - cmd.Parameters.AddWithValue(limit); - await using var reader = await cmd.ExecuteReaderAsync(); - - var items = new List(); - - while (await reader.ReadAsync()) - { - items.Add(new - { - id = reader.GetInt32(0), - name = reader.GetString(1), - category = reader.GetString(2), - price = reader.GetInt32(3), - quantity = reader.GetInt32(4), - active = reader.GetBoolean(5), - tags = JsonSerializer.Deserialize>(reader.GetString(6)), - rating = new { score = reader.GetInt32(7), count = reader.GetInt32(8) }, - }); +} ); + +var pgDataSource = OpenPgPool (); + +router.MapGet ( "/async-db", async ( HttpRequest request ) => { + var min = request.Query.TryGetValue ( "min", out var vmin ) ? vmin.GetInteger () : 10; + var max = request.Query.TryGetValue ( "max", out var vmax ) ? vmax.GetInteger () : 50; + var limit = request.Query.TryGetValue ( "limit", out var vlim ) ? Math.Clamp ( vlim.GetInteger (), 1, 50 ) : 50; + + Debug.Assert ( pgDataSource != null, "PostgreSQL data source is not available. Please set the DATABASE_URL environment variable." ); + + await using var cmd = pgDataSource.CreateCommand ( + "SELECT id, name, category, price, quantity, active, tags, rating_score, rating_count FROM items WHERE price BETWEEN $1 AND $2 LIMIT $3" ); + + cmd.Parameters.AddWithValue ( min ); + cmd.Parameters.AddWithValue ( max ); + cmd.Parameters.AddWithValue ( limit ); + await using var reader = await cmd.ExecuteReaderAsync (); + + var items = new List (); + + while (await reader.ReadAsync ()) { + items.Add ( new { + id = reader.GetInt32 ( 0 ), + name = reader.GetString ( 1 ), + category = reader.GetString ( 2 ), + price = reader.GetInt32 ( 3 ), + quantity = reader.GetInt32 ( 4 ), + active = reader.GetBoolean ( 5 ), + tags = JsonSerializer.Deserialize> ( reader.GetString ( 6 ) ), + rating = new { score = reader.GetInt32 ( 7 ), count = reader.GetInt32 ( 8 ) }, + } ); } - return new HttpResponse - { - Content = JsonContent.Create(new ListWithCount(items)) + return new HttpResponse { + Content = JsonContent.Create ( new ListWithCount ( items ) ) }; -}); +} ); -await server.UseRouter(router).Build().StartAsync(); +await server.UseRouter ( router ).Build ().StartAsync (); return; -static string Sum(HttpRequest request) -{ - var a = request.Query["a"].MaybeNullOrEmpty()?.GetInteger() ?? 0; - var b = request.Query["b"].MaybeNullOrEmpty()?.GetInteger() ?? 0; +static string Sum ( HttpRequest request ) { + var a = request.Query [ "a" ].MaybeNullOrEmpty ()?.GetInteger () ?? 0; + var b = request.Query [ "b" ].MaybeNullOrEmpty ()?.GetInteger () ?? 0; var c = 0; - if (request.Method == HttpMethod.Post) - { - c = int.Parse(request.Body); + if (request.Method == HttpMethod.Post) { + c = int.Parse ( request.Body ); } - return (a + b + c).ToString(); + return (a + b + c).ToString (); } -static List? LoadItems() -{ - var jsonOptions = new JsonSerializerOptions - { +static List? LoadItems () { + var jsonOptions = new JsonSerializerOptions { PropertyNameCaseInsensitive = true, PropertyNamingPolicy = JsonNamingPolicy.CamelCase }; - var datasetPath = Environment.GetEnvironmentVariable("DATASET_PATH") ?? "/data/dataset.json"; + var datasetPath = Environment.GetEnvironmentVariable ( "DATASET_PATH" ) ?? "/data/dataset.json"; - if (File.Exists(datasetPath)) - { - return JsonSerializer.Deserialize>(File.ReadAllText(datasetPath), jsonOptions); + if (File.Exists ( datasetPath )) { + return JsonSerializer.Deserialize> ( File.ReadAllText ( datasetPath ), jsonOptions ); } return null; } -static NpgsqlDataSource? OpenPgPool() -{ - var dbUrl = Environment.GetEnvironmentVariable("DATABASE_URL"); - if (string.IsNullOrEmpty(dbUrl)) return null; - try - { - var uri = new Uri(dbUrl); - var userInfo = uri.UserInfo.Split(':'); - var connStr = $"Host={uri.Host};Port={uri.Port};Username={userInfo[0]};Password={userInfo[1]};Database={uri.AbsolutePath.TrimStart('/')};Maximum Pool Size=256;Minimum Pool Size=64;Multiplexing=true;No Reset On Close=true;Max Auto Prepare=4;Auto Prepare Min Usages=1"; - var builder = new NpgsqlDataSourceBuilder(connStr); - return builder.Build(); +static NpgsqlDataSource? OpenPgPool () { + var dbUrl = Environment.GetEnvironmentVariable ( "DATABASE_URL" ); + if (string.IsNullOrEmpty ( dbUrl )) + return null; + try { + var uri = new Uri ( dbUrl ); + var userInfo = uri.UserInfo.Split ( ':' ); + var connStr = $"Host={uri.Host};Port={uri.Port};Username={userInfo [ 0 ]};Password={userInfo [ 1 ]};Database={uri.AbsolutePath.TrimStart ( '/' )};Maximum Pool Size=256;Minimum Pool Size=64;Multiplexing=true;No Reset On Close=true;Max Auto Prepare=4;Auto Prepare Min Usages=1"; + var builder = new NpgsqlDataSourceBuilder ( connStr ); + return builder.Build (); + } + catch { + return null; } - catch { return null; } } diff --git a/frameworks/sisk/sisk.sln b/frameworks/sisk/sisk.sln new file mode 100644 index 00000000..c935f1e3 --- /dev/null +++ b/frameworks/sisk/sisk.sln @@ -0,0 +1,24 @@ +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio Version 17 +VisualStudioVersion = 17.5.2.0 +MinimumVisualStudioVersion = 10.0.40219.1 +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "sisk", "sisk.csproj", "{C0CA2CFC-1FB1-7DB1-1D65-1867C8466439}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Any CPU = Debug|Any CPU + Release|Any CPU = Release|Any CPU + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {C0CA2CFC-1FB1-7DB1-1D65-1867C8466439}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {C0CA2CFC-1FB1-7DB1-1D65-1867C8466439}.Debug|Any CPU.Build.0 = Debug|Any CPU + {C0CA2CFC-1FB1-7DB1-1D65-1867C8466439}.Release|Any CPU.ActiveCfg = Release|Any CPU + {C0CA2CFC-1FB1-7DB1-1D65-1867C8466439}.Release|Any CPU.Build.0 = Release|Any CPU + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection + GlobalSection(ExtensibilityGlobals) = postSolution + SolutionGuid = {0131EE85-9736-4BCD-950D-D09A342D540E} + EndGlobalSection +EndGlobal diff --git a/site/data/api-16-1024.json b/site/data/api-16-1024.json index 21da98f4..150898c7 100644 --- a/site/data/api-16-1024.json +++ b/site/data/api-16-1024.json @@ -874,6 +874,32 @@ "tpl_static": 0, "tpl_async_db": 163326 }, + { + "framework": "sisk", + "language": "C#", + "rps": 82086, + "avg_latency": "12.18ms", + "p99_latency": "54.00ms", + "cpu": "1477.1%", + "memory": "240MiB", + "connections": 1024, + "threads": 64, + "duration": "5s", + "pipeline": 1, + "bandwidth": "414.81MB/s", + "input_bw": "4.62MB/s", + "reconnects": 246252, + "status_2xx": 1231297, + "status_3xx": 0, + "status_4xx": 0, + "status_5xx": 0, + "tpl_baseline": 461622, + "tpl_json": 461667, + "tpl_db": 0, + "tpl_upload": 0, + "tpl_static": 0, + "tpl_async_db": 308008 + }, { "framework": "SlimeWeb", "language": "Python", diff --git a/site/data/api-4-256.json b/site/data/api-4-256.json index 37a3eec5..f1b2f49d 100644 --- a/site/data/api-4-256.json +++ b/site/data/api-4-256.json @@ -874,6 +874,32 @@ "tpl_static": 0, "tpl_async_db": 65218 }, + { + "framework": "sisk", + "language": "C#", + "rps": 33914, + "avg_latency": "6.92ms", + "p99_latency": "28.00ms", + "cpu": "333.9%", + "memory": "154MiB", + "connections": 256, + "threads": 64, + "duration": "5s", + "pipeline": 1, + "bandwidth": "171.31MB/s", + "input_bw": "1.91MB/s", + "reconnects": 101709, + "status_2xx": 508720, + "status_3xx": 0, + "status_4xx": 0, + "status_5xx": 0, + "tpl_baseline": 190879, + "tpl_json": 190927, + "tpl_db": 0, + "tpl_upload": 0, + "tpl_static": 0, + "tpl_async_db": 126914 + }, { "framework": "SlimeWeb", "language": "Python", diff --git a/site/data/async-db-1024.json b/site/data/async-db-1024.json index e68a567a..b4def99a 100644 --- a/site/data/async-db-1024.json +++ b/site/data/async-db-1024.json @@ -690,6 +690,26 @@ "status_4xx": 0, "status_5xx": 0 }, + { + "framework": "sisk", + "language": "C#", + "rps": 46, + "avg_latency": "589.38ms", + "p99_latency": "1.35s", + "cpu": "23.4%", + "memory": "129MiB", + "connections": 1024, + "threads": 64, + "duration": "5s", + "pipeline": 1, + "bandwidth": "178.91KB/s", + "input_bw": "3.14KB/s", + "reconnects": 0, + "status_2xx": 461, + "status_3xx": 0, + "status_4xx": 0, + "status_5xx": 0 + }, { "framework": "SlimeWeb", "language": "Python", diff --git a/site/data/baseline-4096.json b/site/data/baseline-4096.json index d379fa09..75b1d7c5 100644 --- a/site/data/baseline-4096.json +++ b/site/data/baseline-4096.json @@ -966,6 +966,26 @@ "status_4xx": 0, "status_5xx": 0 }, + { + "framework": "sisk", + "language": "C#", + "rps": 431777, + "avg_latency": "9.37ms", + "p99_latency": "21.90ms", + "cpu": "4332.4%", + "memory": "458MiB", + "connections": 4096, + "threads": 64, + "duration": "5s", + "pipeline": 1, + "bandwidth": "54.34MB/s", + "input_bw": "33.35MB/s", + "reconnects": 0, + "status_2xx": 2158886, + "status_3xx": 0, + "status_4xx": 0, + "status_5xx": 0 + }, { "framework": "SlimeWeb", "language": "Python", diff --git a/site/data/baseline-512.json b/site/data/baseline-512.json index d146566a..a38fdea8 100644 --- a/site/data/baseline-512.json +++ b/site/data/baseline-512.json @@ -966,6 +966,26 @@ "status_4xx": 0, "status_5xx": 0 }, + { + "framework": "sisk", + "language": "C#", + "rps": 467249, + "avg_latency": "973us", + "p99_latency": "4.76ms", + "cpu": "3861.6%", + "memory": "214MiB", + "connections": 512, + "threads": 64, + "duration": "5s", + "pipeline": 1, + "bandwidth": "58.81MB/s", + "input_bw": "36.09MB/s", + "reconnects": 0, + "status_2xx": 2336247, + "status_3xx": 0, + "status_4xx": 0, + "status_5xx": 0 + }, { "framework": "SlimeWeb", "language": "Python", diff --git a/site/data/json-4096.json b/site/data/json-4096.json index e3d49ef4..2b3c1487 100644 --- a/site/data/json-4096.json +++ b/site/data/json-4096.json @@ -750,6 +750,26 @@ "status_4xx": 0, "status_5xx": 0 }, + { + "framework": "sisk", + "language": "C#", + "rps": 348824, + "avg_latency": "11.54ms", + "p99_latency": "31.00ms", + "cpu": "4973.4%", + "memory": "563MiB", + "connections": 4096, + "threads": 64, + "duration": "5s", + "pipeline": 1, + "bandwidth": "1.19GB/s", + "input_bw": "16.63MB/s", + "reconnects": 68040, + "status_2xx": 1744121, + "status_3xx": 0, + "status_4xx": 0, + "status_5xx": 0 + }, { "framework": "SlimeWeb", "language": "Python", diff --git a/site/data/json-comp-16384.json b/site/data/json-comp-16384.json index 9a94cec9..b9003276 100644 --- a/site/data/json-comp-16384.json +++ b/site/data/json-comp-16384.json @@ -679,6 +679,26 @@ "status_4xx": 0, "status_5xx": 0 }, + { + "framework": "sisk", + "language": "C#", + "rps": 165166, + "avg_latency": "84.56ms", + "p99_latency": "154.90ms", + "cpu": "5632.0%", + "memory": "1.2GiB", + "connections": 16384, + "threads": 64, + "duration": "5s", + "pipeline": 1, + "bandwidth": "218.20MB/s", + "input_bw": "12.29MB/s", + "reconnects": 23838, + "status_2xx": 825833, + "status_3xx": 0, + "status_4xx": 0, + "status_5xx": 0 + }, { "framework": "SlimeWeb", "language": "Python", diff --git a/site/data/json-comp-4096.json b/site/data/json-comp-4096.json index 02062acc..2ee6d0db 100644 --- a/site/data/json-comp-4096.json +++ b/site/data/json-comp-4096.json @@ -679,6 +679,26 @@ "status_4xx": 0, "status_5xx": 0 }, + { + "framework": "sisk", + "language": "C#", + "rps": 170114, + "avg_latency": "24.03ms", + "p99_latency": "41.80ms", + "cpu": "5787.9%", + "memory": "736MiB", + "connections": 4096, + "threads": 64, + "duration": "5s", + "pipeline": 1, + "bandwidth": "224.73MB/s", + "input_bw": "12.65MB/s", + "reconnects": 32785, + "status_2xx": 850574, + "status_3xx": 0, + "status_4xx": 0, + "status_5xx": 0 + }, { "framework": "SlimeWeb", "language": "Python", diff --git a/site/data/json-comp-512.json b/site/data/json-comp-512.json index 39f99b72..78e09f9a 100644 --- a/site/data/json-comp-512.json +++ b/site/data/json-comp-512.json @@ -679,6 +679,26 @@ "status_4xx": 0, "status_5xx": 0 }, + { + "framework": "sisk", + "language": "C#", + "rps": 175047, + "avg_latency": "2.87ms", + "p99_latency": "8.18ms", + "cpu": "5295.4%", + "memory": "294MiB", + "connections": 512, + "threads": 64, + "duration": "5s", + "pipeline": 1, + "bandwidth": "231.23MB/s", + "input_bw": "13.02MB/s", + "reconnects": 35016, + "status_2xx": 875239, + "status_3xx": 0, + "status_4xx": 0, + "status_5xx": 0 + }, { "framework": "SlimeWeb", "language": "Python", diff --git a/site/data/limited-conn-4096.json b/site/data/limited-conn-4096.json index 9e94b823..713015eb 100644 --- a/site/data/limited-conn-4096.json +++ b/site/data/limited-conn-4096.json @@ -966,6 +966,26 @@ "status_4xx": 0, "status_5xx": 0 }, + { + "framework": "sisk", + "language": "C#", + "rps": 373580, + "avg_latency": "10.82ms", + "p99_latency": "77.80ms", + "cpu": "4519.5%", + "memory": "768MiB", + "connections": 4096, + "threads": 64, + "duration": "5s", + "pipeline": 1, + "bandwidth": "47.02MB/s", + "input_bw": "28.86MB/s", + "reconnects": 185092, + "status_2xx": 1867901, + "status_3xx": 0, + "status_4xx": 0, + "status_5xx": 0 + }, { "framework": "SlimeWeb", "language": "Python", diff --git a/site/data/limited-conn-512.json b/site/data/limited-conn-512.json index 5c1ffdb6..23cea0aa 100644 --- a/site/data/limited-conn-512.json +++ b/site/data/limited-conn-512.json @@ -966,6 +966,26 @@ "status_4xx": 0, "status_5xx": 0 }, + { + "framework": "sisk", + "language": "C#", + "rps": 479610, + "avg_latency": "952us", + "p99_latency": "8.92ms", + "cpu": "5272.6%", + "memory": "289MiB", + "connections": 512, + "threads": 64, + "duration": "5s", + "pipeline": 1, + "bandwidth": "60.36MB/s", + "input_bw": "37.05MB/s", + "reconnects": 239714, + "status_2xx": 2398053, + "status_3xx": 0, + "status_4xx": 0, + "status_5xx": 0 + }, { "framework": "SlimeWeb", "language": "Python", diff --git a/site/data/pipelined-4096.json b/site/data/pipelined-4096.json index 3e398979..fc91103b 100644 --- a/site/data/pipelined-4096.json +++ b/site/data/pipelined-4096.json @@ -911,6 +911,25 @@ "status_4xx": 0, "status_5xx": 0 }, + { + "framework": "sisk", + "language": "C#", + "rps": 536033, + "avg_latency": "119.25ms", + "p99_latency": "155.00ms", + "cpu": "3891.3%", + "memory": "531MiB", + "connections": 4096, + "threads": 64, + "duration": "5s", + "pipeline": 16, + "bandwidth": "67.46MB/s", + "reconnects": 0, + "status_2xx": 2680167, + "status_3xx": 0, + "status_4xx": 0, + "status_5xx": 0 + }, { "framework": "SlimeWeb", "language": "Python", diff --git a/site/data/pipelined-512.json b/site/data/pipelined-512.json index 6830d61b..be760785 100644 --- a/site/data/pipelined-512.json +++ b/site/data/pipelined-512.json @@ -911,6 +911,25 @@ "status_4xx": 0, "status_5xx": 0 }, + { + "framework": "sisk", + "language": "C#", + "rps": 526923, + "avg_latency": "13.62ms", + "p99_latency": "27.40ms", + "cpu": "3534.0%", + "memory": "154MiB", + "connections": 512, + "threads": 64, + "duration": "5s", + "pipeline": 16, + "bandwidth": "66.32MB/s", + "reconnects": 0, + "status_2xx": 2634617, + "status_3xx": 0, + "status_4xx": 0, + "status_5xx": 0 + }, { "framework": "SlimeWeb", "language": "Python", diff --git a/site/data/static-1024.json b/site/data/static-1024.json index c2223bd9..9b05425f 100644 --- a/site/data/static-1024.json +++ b/site/data/static-1024.json @@ -810,6 +810,25 @@ "status_4xx": 0, "status_5xx": 0 }, + { + "framework": "sisk", + "language": "C#", + "rps": 44286, + "avg_latency": "23.66ms", + "p99_latency": "23.66ms", + "cpu": "6068.6%", + "memory": "513MiB", + "connections": 1024, + "threads": 64, + "duration": "5s", + "pipeline": 1, + "bandwidth": "811.40MB", + "reconnects": 0, + "status_2xx": 225171, + "status_3xx": 0, + "status_4xx": 0, + "status_5xx": 0 + }, { "framework": "SlimeWeb", "language": "Python", diff --git a/site/data/static-4096.json b/site/data/static-4096.json index 58ac883a..6a0e4fb2 100644 --- a/site/data/static-4096.json +++ b/site/data/static-4096.json @@ -810,6 +810,25 @@ "status_4xx": 0, "status_5xx": 0 }, + { + "framework": "sisk", + "language": "C#", + "rps": 43816, + "avg_latency": "95.32ms", + "p99_latency": "95.32ms", + "cpu": "6094.0%", + "memory": "815MiB", + "connections": 4096, + "threads": 64, + "duration": "5s", + "pipeline": 1, + "bandwidth": "802.88MB", + "reconnects": 0, + "status_2xx": 223589, + "status_3xx": 0, + "status_4xx": 0, + "status_5xx": 0 + }, { "framework": "SlimeWeb", "language": "Python", diff --git a/site/data/static-6800.json b/site/data/static-6800.json index 9c1bab7d..3cee7769 100644 --- a/site/data/static-6800.json +++ b/site/data/static-6800.json @@ -810,6 +810,25 @@ "status_4xx": 0, "status_5xx": 0 }, + { + "framework": "sisk", + "language": "C#", + "rps": 43836, + "avg_latency": "156.25ms", + "p99_latency": "156.25ms", + "cpu": "5980.1%", + "memory": "977MiB", + "connections": 6800, + "threads": 64, + "duration": "5s", + "pipeline": 1, + "bandwidth": "803.24MB", + "reconnects": 0, + "status_2xx": 223552, + "status_3xx": 0, + "status_4xx": 0, + "status_5xx": 0 + }, { "framework": "SlimeWeb", "language": "Python", diff --git a/site/data/upload-256.json b/site/data/upload-256.json index 46b906a2..bb8b0a4a 100644 --- a/site/data/upload-256.json +++ b/site/data/upload-256.json @@ -738,6 +738,26 @@ "status_4xx": 0, "status_5xx": 0 }, + { + "framework": "sisk", + "language": "C#", + "rps": 801, + "avg_latency": "314.23ms", + "p99_latency": "832.00ms", + "cpu": "3244.5%", + "memory": "11.3GiB", + "connections": 256, + "threads": 64, + "duration": "5s", + "pipeline": 1, + "bandwidth": "107.32KB/s", + "input_bw": "6.35GB/s", + "reconnects": 719, + "status_2xx": 4006, + "status_3xx": 0, + "status_4xx": 0, + "status_5xx": 0 + }, { "framework": "SlimeWeb", "language": "Python", diff --git a/site/data/upload-32.json b/site/data/upload-32.json index 04dac5bf..b896cc30 100644 --- a/site/data/upload-32.json +++ b/site/data/upload-32.json @@ -738,6 +738,26 @@ "status_4xx": 0, "status_5xx": 0 }, + { + "framework": "sisk", + "language": "C#", + "rps": 687, + "avg_latency": "46.42ms", + "p99_latency": "203.00ms", + "cpu": "2216.7%", + "memory": "8.0GiB", + "connections": 32, + "threads": 64, + "duration": "5s", + "pipeline": 1, + "bandwidth": "92.03KB/s", + "input_bw": "5.45GB/s", + "reconnects": 681, + "status_2xx": 3435, + "status_3xx": 0, + "status_4xx": 0, + "status_5xx": 0 + }, { "framework": "SlimeWeb", "language": "Python", diff --git a/site/static/logs/api-16/1024/sisk.log b/site/static/logs/api-16/1024/sisk.log new file mode 100644 index 00000000..47ba024c --- /dev/null +++ b/site/static/logs/api-16/1024/sisk.log @@ -0,0 +1,4 @@ +The HTTP server is listening at: +- http://0.0.0.0:8080/ +Cannot load library libgssapi_krb5.so.2 +Error: libgssapi_krb5.so.2: cannot open shared object file: No such file or directory diff --git a/site/static/logs/api-4/256/sisk.log b/site/static/logs/api-4/256/sisk.log new file mode 100644 index 00000000..47ba024c --- /dev/null +++ b/site/static/logs/api-4/256/sisk.log @@ -0,0 +1,4 @@ +The HTTP server is listening at: +- http://0.0.0.0:8080/ +Cannot load library libgssapi_krb5.so.2 +Error: libgssapi_krb5.so.2: cannot open shared object file: No such file or directory diff --git a/site/static/logs/async-db/1024/sisk.log b/site/static/logs/async-db/1024/sisk.log new file mode 100644 index 00000000..47ba024c --- /dev/null +++ b/site/static/logs/async-db/1024/sisk.log @@ -0,0 +1,4 @@ +The HTTP server is listening at: +- http://0.0.0.0:8080/ +Cannot load library libgssapi_krb5.so.2 +Error: libgssapi_krb5.so.2: cannot open shared object file: No such file or directory diff --git a/site/static/logs/baseline/4096/sisk.log b/site/static/logs/baseline/4096/sisk.log new file mode 100644 index 00000000..76d08dda --- /dev/null +++ b/site/static/logs/baseline/4096/sisk.log @@ -0,0 +1,2 @@ +The HTTP server is listening at: +- http://0.0.0.0:8080/ diff --git a/site/static/logs/baseline/512/sisk.log b/site/static/logs/baseline/512/sisk.log new file mode 100644 index 00000000..76d08dda --- /dev/null +++ b/site/static/logs/baseline/512/sisk.log @@ -0,0 +1,2 @@ +The HTTP server is listening at: +- http://0.0.0.0:8080/ diff --git a/site/static/logs/json-comp/16384/sisk.log b/site/static/logs/json-comp/16384/sisk.log new file mode 100644 index 00000000..76d08dda --- /dev/null +++ b/site/static/logs/json-comp/16384/sisk.log @@ -0,0 +1,2 @@ +The HTTP server is listening at: +- http://0.0.0.0:8080/ diff --git a/site/static/logs/json-comp/4096/sisk.log b/site/static/logs/json-comp/4096/sisk.log new file mode 100644 index 00000000..76d08dda --- /dev/null +++ b/site/static/logs/json-comp/4096/sisk.log @@ -0,0 +1,2 @@ +The HTTP server is listening at: +- http://0.0.0.0:8080/ diff --git a/site/static/logs/json-comp/512/sisk.log b/site/static/logs/json-comp/512/sisk.log new file mode 100644 index 00000000..76d08dda --- /dev/null +++ b/site/static/logs/json-comp/512/sisk.log @@ -0,0 +1,2 @@ +The HTTP server is listening at: +- http://0.0.0.0:8080/ diff --git a/site/static/logs/json/4096/sisk.log b/site/static/logs/json/4096/sisk.log new file mode 100644 index 00000000..76d08dda --- /dev/null +++ b/site/static/logs/json/4096/sisk.log @@ -0,0 +1,2 @@ +The HTTP server is listening at: +- http://0.0.0.0:8080/ diff --git a/site/static/logs/limited-conn/4096/sisk.log b/site/static/logs/limited-conn/4096/sisk.log new file mode 100644 index 00000000..76d08dda --- /dev/null +++ b/site/static/logs/limited-conn/4096/sisk.log @@ -0,0 +1,2 @@ +The HTTP server is listening at: +- http://0.0.0.0:8080/ diff --git a/site/static/logs/limited-conn/512/sisk.log b/site/static/logs/limited-conn/512/sisk.log new file mode 100644 index 00000000..76d08dda --- /dev/null +++ b/site/static/logs/limited-conn/512/sisk.log @@ -0,0 +1,2 @@ +The HTTP server is listening at: +- http://0.0.0.0:8080/ diff --git a/site/static/logs/pipelined/4096/sisk.log b/site/static/logs/pipelined/4096/sisk.log new file mode 100644 index 00000000..76d08dda --- /dev/null +++ b/site/static/logs/pipelined/4096/sisk.log @@ -0,0 +1,2 @@ +The HTTP server is listening at: +- http://0.0.0.0:8080/ diff --git a/site/static/logs/pipelined/512/sisk.log b/site/static/logs/pipelined/512/sisk.log new file mode 100644 index 00000000..76d08dda --- /dev/null +++ b/site/static/logs/pipelined/512/sisk.log @@ -0,0 +1,2 @@ +The HTTP server is listening at: +- http://0.0.0.0:8080/ diff --git a/site/static/logs/static/1024/sisk.log b/site/static/logs/static/1024/sisk.log new file mode 100644 index 00000000..76d08dda --- /dev/null +++ b/site/static/logs/static/1024/sisk.log @@ -0,0 +1,2 @@ +The HTTP server is listening at: +- http://0.0.0.0:8080/ diff --git a/site/static/logs/static/4096/sisk.log b/site/static/logs/static/4096/sisk.log new file mode 100644 index 00000000..76d08dda --- /dev/null +++ b/site/static/logs/static/4096/sisk.log @@ -0,0 +1,2 @@ +The HTTP server is listening at: +- http://0.0.0.0:8080/ diff --git a/site/static/logs/static/6800/sisk.log b/site/static/logs/static/6800/sisk.log new file mode 100644 index 00000000..76d08dda --- /dev/null +++ b/site/static/logs/static/6800/sisk.log @@ -0,0 +1,2 @@ +The HTTP server is listening at: +- http://0.0.0.0:8080/ diff --git a/site/static/logs/upload/256/sisk.log b/site/static/logs/upload/256/sisk.log new file mode 100644 index 00000000..76d08dda --- /dev/null +++ b/site/static/logs/upload/256/sisk.log @@ -0,0 +1,2 @@ +The HTTP server is listening at: +- http://0.0.0.0:8080/ diff --git a/site/static/logs/upload/32/sisk.log b/site/static/logs/upload/32/sisk.log new file mode 100644 index 00000000..76d08dda --- /dev/null +++ b/site/static/logs/upload/32/sisk.log @@ -0,0 +1,2 @@ +The HTTP server is listening at: +- http://0.0.0.0:8080/