diff --git a/Dockerfile b/Dockerfile index 4ce4c5a..f6fe26a 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,4 +1,4 @@ -FROM alpine:latest as build +FROM alpine:latest AS build RUN apk update RUN apk add --no-cache zig @@ -9,7 +9,7 @@ COPY ./build.zig . RUN zig build --release=fast -FROM alpine:latest as app +FROM alpine:latest AS app WORKDIR /app COPY --from=build /app/zig-out/bin/zigpay . diff --git a/docker-compose.yml b/docker-compose.yml index 4ac365f..8dec153 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -19,7 +19,7 @@ services: deploy: resources: limits: - cpus: "0.30" + cpus: "0.20" memory: "50MB" zig1: &zig container_name: zig-pay-1 @@ -40,7 +40,7 @@ services: deploy: resources: limits: - cpus: "0.60" + cpus: "0.20" memory: "50MB" zig2: <<: *zig diff --git a/src/endpoints/payments.zig b/src/endpoints/payments.zig index 95bb8dd..3f624ee 100644 --- a/src/endpoints/payments.zig +++ b/src/endpoints/payments.zig @@ -95,7 +95,6 @@ const template_json_summary: []const u8 = ; fn getSummary(req: *Request, res: *Response) void { - std.Thread.sleep(1_000_000 * 10); var from: ?DateTime = null; var to: ?DateTime = null; diff --git a/src/load_balancer.zig b/src/load_balancer.zig index 9da50bd..3a5f32c 100644 --- a/src/load_balancer.zig +++ b/src/load_balancer.zig @@ -13,6 +13,10 @@ const Stream = net.Stream; const BUFFER_SIZE = 1024; +var metrics_mutex = std.Thread.Mutex{}; +var metrics_num_requests: u64 = 0; +var metrics_sum_req_time: u64 = 0; + const UpstreamConnectionState = enum { inactive, available, occupied }; const UpstreamConnection = struct { @@ -147,6 +151,8 @@ pub const LoadBalancer = struct { buffer_request[0] = 0; + var timer = std.time.Timer.start() catch return; + while (true) { var req_len: usize = 1; @@ -168,6 +174,7 @@ pub const LoadBalancer = struct { break; } } + timer.reset(); upstream.stream.writeAll(buffer_request[0..req_len]) catch |err| { log.err("Error when writing to upstream {}\n", .{err}); @@ -187,6 +194,18 @@ pub const LoadBalancer = struct { log.err("Error when write from connection {}\n", .{err}); return; }; + + const req_time_ns = timer.lap(); + + metrics_mutex.lock(); + metrics_num_requests += 1; + metrics_sum_req_time += req_time_ns; + + if (metrics_num_requests % 5000 == 0) { + std.debug.print("average requests time ns: {d}\n", .{metrics_sum_req_time / metrics_num_requests}); + } + + metrics_mutex.unlock(); } } }; diff --git a/src/payment_integrator.zig b/src/payment_integrator.zig index 03d3d89..b809425 100644 --- a/src/payment_integrator.zig +++ b/src/payment_integrator.zig @@ -53,7 +53,7 @@ pub const PaymentIntegrator = struct { fn startProcess(self: *PaymentIntegrator) void { while (true) { - Thread.sleep(10_000_000); + Thread.sleep(50_000_000); self.verifyTailSize(); self.processPayments(); @@ -112,8 +112,8 @@ pub const PaymentIntegrator = struct { } pub fn newPaymentEvent(payment: *payments.Payment) void { - payment_integrator.mutex.lock(); - defer payment_integrator.mutex.unlock(); + //payment_integrator.mutex.lock(); + //defer payment_integrator.mutex.unlock(); const head = payment_integrator.head % MAX_QUEUE_SIZE; payment_integrator.queue[head].payment = payment; diff --git a/src/services/http_service.zig b/src/services/http_service.zig index f73e040..8ecd99a 100644 --- a/src/services/http_service.zig +++ b/src/services/http_service.zig @@ -194,7 +194,7 @@ pub const HttpService = struct { pub fn startMessenger(self: *HttpService, connections: []ServiceConnection, tickets: []ServiceTicket, thread_id: usize) void { while (true) { - Thread.sleep(20_000_000); + Thread.sleep(30_000_000); if (self.thread_stop[thread_id]) { var conn_open = false;