From 741fa349b8d860730d02a363fb6e5ff8f6f3fc82 Mon Sep 17 00:00:00 2001 From: Stefan Boberg Date: Thu, 30 Sep 2021 10:39:39 +0200 Subject: structured cache: Added stats test code (needs additional work / metrics) --- zenserver/cache/structuredcache.cpp | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) (limited to 'zenserver/cache/structuredcache.cpp') diff --git a/zenserver/cache/structuredcache.cpp b/zenserver/cache/structuredcache.cpp index 74cee6614..eee3f8279 100644 --- a/zenserver/cache/structuredcache.cpp +++ b/zenserver/cache/structuredcache.cpp @@ -6,6 +6,7 @@ #include #include #include +#include #include #include #include @@ -193,10 +194,18 @@ HttpStructuredCacheService::HandleRequest(HttpServerRequest& Request) { CacheRef Ref; + Stopwatch Timer; + auto _ = MakeGuard([&] { m_HttpRequests.Update(Timer.GetElapsedTicks()); }); + if (!ValidateKeyUri(Request, /* out */ Ref)) { std::string_view Key = Request.RelativeUri(); + if (Key.empty()) + { + return HandleStatusRequest(Request); + } + if (std::all_of(begin(Key), end(Key), [](const char c) { return std::isalnum(c); })) { // Bucket reference @@ -829,4 +838,14 @@ HttpStructuredCacheService::ValidateKeyUri(HttpServerRequest& Request, CacheRef& return true; } + +void +HttpStructuredCacheService::HandleStatusRequest(zen::HttpServerRequest& Request) +{ + CbObjectWriter Cbo; + Cbo << "ok" << true << "http_requests" << m_HttpRequests.Count(); + + Request.WriteResponse(HttpResponseCode::OK, Cbo.Save()); +} + } // namespace zen -- cgit v1.2.3 From 6400d31d561615ceb4e363d6339c2a59a025ad53 Mon Sep 17 00:00:00 2001 From: Stefan Boberg Date: Thu, 30 Sep 2021 11:53:39 +0200 Subject: structured cache: added request meter and stats reporting --- zenserver/cache/structuredcache.cpp | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) (limited to 'zenserver/cache/structuredcache.cpp') diff --git a/zenserver/cache/structuredcache.cpp b/zenserver/cache/structuredcache.cpp index eee3f8279..c3b60ea8d 100644 --- a/zenserver/cache/structuredcache.cpp +++ b/zenserver/cache/structuredcache.cpp @@ -194,6 +194,8 @@ HttpStructuredCacheService::HandleRequest(HttpServerRequest& Request) { CacheRef Ref; + m_HttpRequestMeter.Mark(1); + Stopwatch Timer; auto _ = MakeGuard([&] { m_HttpRequests.Update(Timer.GetElapsedTicks()); }); @@ -843,7 +845,10 @@ void HttpStructuredCacheService::HandleStatusRequest(zen::HttpServerRequest& Request) { CbObjectWriter Cbo; - Cbo << "ok" << true << "http_requests" << m_HttpRequests.Count(); + Cbo << "ok" << true; + + EmitSnapshot("requests", m_HttpRequests, Cbo); + EmitSnapshot("request_rate", m_HttpRequestMeter, Cbo); Request.WriteResponse(HttpResponseCode::OK, Cbo.Save()); } -- cgit v1.2.3 From 56ac15aa5d44a7564497fc4e7f252d135a1904a4 Mon Sep 17 00:00:00 2001 From: Stefan Boberg Date: Thu, 30 Sep 2021 14:45:07 +0200 Subject: structured cache: Rewrote metrics tracking using OperationTiming --- zenserver/cache/structuredcache.cpp | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) (limited to 'zenserver/cache/structuredcache.cpp') diff --git a/zenserver/cache/structuredcache.cpp b/zenserver/cache/structuredcache.cpp index c3b60ea8d..c71beb700 100644 --- a/zenserver/cache/structuredcache.cpp +++ b/zenserver/cache/structuredcache.cpp @@ -194,10 +194,7 @@ HttpStructuredCacheService::HandleRequest(HttpServerRequest& Request) { CacheRef Ref; - m_HttpRequestMeter.Mark(1); - - Stopwatch Timer; - auto _ = MakeGuard([&] { m_HttpRequests.Update(Timer.GetElapsedTicks()); }); + metrics::OperationTiming::Scope $(m_HttpRequests); if (!ValidateKeyUri(Request, /* out */ Ref)) { @@ -846,9 +843,8 @@ HttpStructuredCacheService::HandleStatusRequest(zen::HttpServerRequest& Request) { CbObjectWriter Cbo; Cbo << "ok" << true; - + EmitSnapshot("requests", m_HttpRequests, Cbo); - EmitSnapshot("request_rate", m_HttpRequestMeter, Cbo); Request.WriteResponse(HttpResponseCode::OK, Cbo.Save()); } -- cgit v1.2.3 From 941bcce13fbef35d08fc44a84632625bd7087dc0 Mon Sep 17 00:00:00 2001 From: Stefan Boberg Date: Thu, 30 Sep 2021 21:26:21 +0200 Subject: structured cache: fixed how HEAD requests are handled the SetSuppressResponseBody() is currently sensitive to ordering and would end up getting called too late to apply fixes UE-129788, UE-129793 --- zenserver/cache/structuredcache.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'zenserver/cache/structuredcache.cpp') diff --git a/zenserver/cache/structuredcache.cpp b/zenserver/cache/structuredcache.cpp index c71beb700..4c89b995a 100644 --- a/zenserver/cache/structuredcache.cpp +++ b/zenserver/cache/structuredcache.cpp @@ -270,11 +270,11 @@ HttpStructuredCacheService::HandleCacheRecordRequest(HttpServerRequest& Request, case kHead: case kGet: { - HandleGetCacheRecord(Request, Ref, Policy); if (Verb == kHead) { Request.SetSuppressResponseBody(); } + HandleGetCacheRecord(Request, Ref, Policy); } break; case kPut: -- cgit v1.2.3 From eff1eb09a293cf92b6c25d7041f6931acf2c169f Mon Sep 17 00:00:00 2001 From: Per Larsson Date: Fri, 1 Oct 2021 11:29:03 +0200 Subject: Added upstream cache perf metrics. --- zenserver/cache/structuredcache.cpp | 6 ++++++ 1 file changed, 6 insertions(+) (limited to 'zenserver/cache/structuredcache.cpp') diff --git a/zenserver/cache/structuredcache.cpp b/zenserver/cache/structuredcache.cpp index 4c89b995a..dc96aecae 100644 --- a/zenserver/cache/structuredcache.cpp +++ b/zenserver/cache/structuredcache.cpp @@ -845,6 +845,12 @@ HttpStructuredCacheService::HandleStatusRequest(zen::HttpServerRequest& Request) Cbo << "ok" << true; EmitSnapshot("requests", m_HttpRequests, Cbo); + if (m_UpstreamCache) + { + Cbo.BeginObject("upstream"); + m_UpstreamCache->GetStatus(Cbo); + Cbo.EndObject(); + } Request.WriteResponse(HttpResponseCode::OK, Cbo.Save()); } -- cgit v1.2.3