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