max connection lb
This commit is contained in:
parent
9e173f5468
commit
2f22506d72
5 changed files with 23 additions and 15 deletions
|
@ -19,7 +19,7 @@ services:
|
|||
deploy:
|
||||
resources:
|
||||
limits:
|
||||
cpus: "1.5"
|
||||
cpus: "0.50"
|
||||
memory: "130MB"
|
||||
zig1: &zig
|
||||
container_name: zig-pay-1
|
||||
|
@ -28,10 +28,10 @@ services:
|
|||
- SERVER_ENV=PROD
|
||||
- DEFAULT_HOST=payment-processor-default
|
||||
- DEFAULT_PORT=8080
|
||||
- DEFAULT_POOL=700
|
||||
- DEFAULT_POOL=400
|
||||
- FALLBACK_HOST=payment-processor-fallback
|
||||
- FALLBACK_PORT=8080
|
||||
- FALLBACK_POOL=400
|
||||
- FALLBACK_POOL=200
|
||||
- PORT=8080
|
||||
- PAYMENT_SUMMARY_EXCHANGE_HOST=zig2
|
||||
- PAYMENT_SUMMARY_EXCHANGE_PORT=6969
|
||||
|
@ -40,7 +40,7 @@ services:
|
|||
deploy:
|
||||
resources:
|
||||
limits:
|
||||
cpus: "0.45"
|
||||
cpus: "0.50"
|
||||
memory: "110MB"
|
||||
zig2:
|
||||
<<: *zig
|
||||
|
@ -49,10 +49,10 @@ services:
|
|||
- SERVER_ENV=PROD
|
||||
- DEFAULT_HOST=payment-processor-default
|
||||
- DEFAULT_PORT=8080
|
||||
- DEFAULT_POOL=700
|
||||
- DEFAULT_POOL=400
|
||||
- FALLBACK_HOST=payment-processor-fallback
|
||||
- FALLBACK_PORT=8080
|
||||
- FALLBACK_POOL=400
|
||||
- FALLBACK_POOL=200
|
||||
- PORT=8080
|
||||
- PAYMENT_SUMMARY_EXCHANGE_HOST=zig1
|
||||
- PAYMENT_SUMMARY_EXCHANGE_PORT=6969
|
||||
|
|
|
@ -95,6 +95,7 @@ const template_json_summary: []const u8 =
|
|||
;
|
||||
|
||||
fn getSummary(req: *Request, res: *Response) void {
|
||||
std.Thread.sleep(1_000_000 * 50);
|
||||
var from: ?DateTime = null;
|
||||
var to: ?DateTime = null;
|
||||
|
||||
|
|
|
@ -12,7 +12,7 @@ const Address = net.Address;
|
|||
const Stream = net.Stream;
|
||||
|
||||
const BUFFER_SIZE = 1024;
|
||||
const MAX_CONNECTION_UPSTREAM = 2050;
|
||||
const MAX_CONNECTION_UPSTREAM = 1520;
|
||||
|
||||
//var metrics_mutex = std.Thread.Mutex{};
|
||||
//var metrics_num_requests: u64 = 0;
|
||||
|
@ -68,18 +68,22 @@ pub const UpstreamServer = struct {
|
|||
|
||||
std.debug.assert(final_addr != null);
|
||||
|
||||
var connections: [MAX_CONNECTION_UPSTREAM]UpstreamConnection = undefined;
|
||||
|
||||
for (&connections) |*conn| {
|
||||
conn.* = UpstreamConnection.init(final_addr.?);
|
||||
}
|
||||
|
||||
return UpstreamServer{
|
||||
.address = final_addr.?,
|
||||
.pool = connections,
|
||||
.pool = undefined,
|
||||
};
|
||||
}
|
||||
|
||||
pub fn warmup(self: *UpstreamServer) void {
|
||||
_ = std.Thread.spawn(.{ .stack_size = 1024 * 24 }, _warmup, .{self}) catch unreachable;
|
||||
}
|
||||
|
||||
fn _warmup(self: *UpstreamServer) void {
|
||||
for (0..self.pool.len) |i| {
|
||||
self.pool[i] = UpstreamConnection.init(self.address);
|
||||
}
|
||||
}
|
||||
|
||||
pub fn getAvailableConnection(self: *UpstreamServer) ?*UpstreamConnection {
|
||||
for (&self.pool) |*conn| {
|
||||
if (conn.state == .available) {
|
||||
|
|
|
@ -88,7 +88,10 @@ fn startLoadBalancer() !void {
|
|||
const server2 = lb.UpstreamServer.init(ctx.config.fallback_host, ctx.config.fallback_port);
|
||||
|
||||
var servers = [_]lb.UpstreamServer{ server1, server2 };
|
||||
servers[0].warmup();
|
||||
servers[1].warmup();
|
||||
|
||||
std.Thread.sleep(1_000_000 * 1000 * 2);
|
||||
var mylb = try lb.LoadBalancer.init(ip_map, ctx.config.port, &servers);
|
||||
|
||||
try mylb.start();
|
||||
|
|
|
@ -88,7 +88,7 @@ pub const PaymentIntegrator = struct {
|
|||
pi.payment.integration_status = .not_integrated;
|
||||
pi.is_integrated = true; // liar
|
||||
} else {
|
||||
pi.payment.requested_at = DateTime.now();
|
||||
//pi.payment.requested_at = DateTime.now();
|
||||
pi.ticket = self.service_pool.dive(pi.getMessage(), MAX_RETRY - pi.retries) catch null;
|
||||
pi.retries -= 1;
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue