mirror of
https://github.com/benjamin-wilson/public-pool.git
synced 2026-09-29 09:05:06 -07:00
Cap concurrent API connections
This commit is contained in:
@@ -39,6 +39,7 @@ API_KEEP_ALIVE_TIMEOUT_MS=5000
|
|||||||
API_REQUEST_TIMEOUT_MS=15000
|
API_REQUEST_TIMEOUT_MS=15000
|
||||||
API_HEADERS_TIMEOUT_MS=10000
|
API_HEADERS_TIMEOUT_MS=10000
|
||||||
API_MAX_REQUESTS_PER_SOCKET=100
|
API_MAX_REQUESTS_PER_SOCKET=100
|
||||||
|
API_MAX_CONNECTIONS_PER_WORKER=500
|
||||||
|
|
||||||
# Docker json-file log rotation. Applies when using the compose files.
|
# Docker json-file log rotation. Applies when using the compose files.
|
||||||
DOCKER_LOG_MAX_SIZE=100m
|
DOCKER_LOG_MAX_SIZE=100m
|
||||||
|
|||||||
@@ -79,6 +79,7 @@ services:
|
|||||||
API_REQUEST_TIMEOUT_MS: ${API_REQUEST_TIMEOUT_MS:-15000}
|
API_REQUEST_TIMEOUT_MS: ${API_REQUEST_TIMEOUT_MS:-15000}
|
||||||
API_HEADERS_TIMEOUT_MS: ${API_HEADERS_TIMEOUT_MS:-10000}
|
API_HEADERS_TIMEOUT_MS: ${API_HEADERS_TIMEOUT_MS:-10000}
|
||||||
API_MAX_REQUESTS_PER_SOCKET: ${API_MAX_REQUESTS_PER_SOCKET:-100}
|
API_MAX_REQUESTS_PER_SOCKET: ${API_MAX_REQUESTS_PER_SOCKET:-100}
|
||||||
|
API_MAX_CONNECTIONS_PER_WORKER: ${API_MAX_CONNECTIONS_PER_WORKER:-500}
|
||||||
PM2_ENABLED: ${PM2_ENABLED:-true}
|
PM2_ENABLED: ${PM2_ENABLED:-true}
|
||||||
STRATUM_WORKERS: ${STRATUM_WORKERS:-auto}
|
STRATUM_WORKERS: ${STRATUM_WORKERS:-auto}
|
||||||
STRATUM_PORTS: ${STRATUM_PORTS:-3333,3332,3331,3330}
|
STRATUM_PORTS: ${STRATUM_PORTS:-3333,3332,3331,3330}
|
||||||
|
|||||||
@@ -109,6 +109,7 @@ services:
|
|||||||
API_REQUEST_TIMEOUT_MS: ${API_REQUEST_TIMEOUT_MS:-15000}
|
API_REQUEST_TIMEOUT_MS: ${API_REQUEST_TIMEOUT_MS:-15000}
|
||||||
API_HEADERS_TIMEOUT_MS: ${API_HEADERS_TIMEOUT_MS:-10000}
|
API_HEADERS_TIMEOUT_MS: ${API_HEADERS_TIMEOUT_MS:-10000}
|
||||||
API_MAX_REQUESTS_PER_SOCKET: ${API_MAX_REQUESTS_PER_SOCKET:-100}
|
API_MAX_REQUESTS_PER_SOCKET: ${API_MAX_REQUESTS_PER_SOCKET:-100}
|
||||||
|
API_MAX_CONNECTIONS_PER_WORKER: ${API_MAX_CONNECTIONS_PER_WORKER:-500}
|
||||||
PM2_ENABLED: ${PM2_ENABLED:-true}
|
PM2_ENABLED: ${PM2_ENABLED:-true}
|
||||||
STRATUM_WORKERS: ${STRATUM_WORKERS:-auto}
|
STRATUM_WORKERS: ${STRATUM_WORKERS:-auto}
|
||||||
STRATUM_PORTS: ${STRATUM_PORTS:-3333,3332,3331,3330}
|
STRATUM_PORTS: ${STRATUM_PORTS:-3333,3332,3331,3330}
|
||||||
|
|||||||
@@ -113,6 +113,7 @@ services:
|
|||||||
API_REQUEST_TIMEOUT_MS: ${API_REQUEST_TIMEOUT_MS:-15000}
|
API_REQUEST_TIMEOUT_MS: ${API_REQUEST_TIMEOUT_MS:-15000}
|
||||||
API_HEADERS_TIMEOUT_MS: ${API_HEADERS_TIMEOUT_MS:-10000}
|
API_HEADERS_TIMEOUT_MS: ${API_HEADERS_TIMEOUT_MS:-10000}
|
||||||
API_MAX_REQUESTS_PER_SOCKET: ${API_MAX_REQUESTS_PER_SOCKET:-100}
|
API_MAX_REQUESTS_PER_SOCKET: ${API_MAX_REQUESTS_PER_SOCKET:-100}
|
||||||
|
API_MAX_CONNECTIONS_PER_WORKER: ${API_MAX_CONNECTIONS_PER_WORKER:-500}
|
||||||
PM2_ENABLED: "true"
|
PM2_ENABLED: "true"
|
||||||
STRATUM_WORKERS: ${STRATUM_WORKERS:-2}
|
STRATUM_WORKERS: ${STRATUM_WORKERS:-2}
|
||||||
STRATUM_MIN_DIFFICULTY: ${STRATUM_MIN_DIFFICULTY:-1}
|
STRATUM_MIN_DIFFICULTY: ${STRATUM_MIN_DIFFICULTY:-1}
|
||||||
|
|||||||
@@ -15,6 +15,7 @@ const DEFAULT_API_KEEP_ALIVE_TIMEOUT_MS = 5_000;
|
|||||||
const DEFAULT_API_REQUEST_TIMEOUT_MS = 15_000;
|
const DEFAULT_API_REQUEST_TIMEOUT_MS = 15_000;
|
||||||
const DEFAULT_API_HEADERS_TIMEOUT_MS = 10_000;
|
const DEFAULT_API_HEADERS_TIMEOUT_MS = 10_000;
|
||||||
const DEFAULT_API_MAX_REQUESTS_PER_SOCKET = 100;
|
const DEFAULT_API_MAX_REQUESTS_PER_SOCKET = 100;
|
||||||
|
const DEFAULT_API_MAX_CONNECTIONS_PER_WORKER = 500;
|
||||||
|
|
||||||
function readPositiveInt(name: string, fallback: number): number {
|
function readPositiveInt(name: string, fallback: number): number {
|
||||||
const value = Number(process.env[name]);
|
const value = Number(process.env[name]);
|
||||||
@@ -93,6 +94,11 @@ async function bootstrap() {
|
|||||||
|
|
||||||
const server: any = app.getHttpServer();
|
const server: any = app.getHttpServer();
|
||||||
server.headersTimeout = readPositiveInt('API_HEADERS_TIMEOUT_MS', DEFAULT_API_HEADERS_TIMEOUT_MS);
|
server.headersTimeout = readPositiveInt('API_HEADERS_TIMEOUT_MS', DEFAULT_API_HEADERS_TIMEOUT_MS);
|
||||||
|
server.maxConnections = readPositiveInt(
|
||||||
|
'API_MAX_CONNECTIONS_PER_WORKER',
|
||||||
|
DEFAULT_API_MAX_CONNECTIONS_PER_WORKER,
|
||||||
|
);
|
||||||
|
server.dropMaxConnection = true;
|
||||||
|
|
||||||
// --- Live-reload TLS certs/keys when they change on disk ---
|
// --- Live-reload TLS certs/keys when they change on disk ---
|
||||||
if (secure) {
|
if (secure) {
|
||||||
|
|||||||
Reference in New Issue
Block a user