Adopt production-safe runtime defaults and forwarder retry limits.

Lower CLI/WebCRT/audit caps, log startup capacity warnings, and bound oclaw requeues so reconnect storms cannot thrash memory.

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
oliver 2026-08-02 18:08:28 +08:00
parent d56020d84c
commit fa577aa3bd
22 changed files with 238 additions and 69 deletions

View file

@ -57,17 +57,27 @@ NETX_UME_NOTIFICATION_TOPIC=ALARM
# Device collectors run inline with the API by default (frontend+backend start is enough).
# Production split only: NETX_RUN_INLINE_SCHEDULERS=false and run `python -m netx_api.worker`
# NETX_RUN_INLINE_SCHEDULERS=false
# NETX_AUDIT_ASYNC=true
# NETX_AUDIT_SAMPLE_N=1
# DB pool (QueuePool). Aim: pool_size + max_overflow >= HTTP peak + NETX_CLI_MAX_CONCURRENT + UME WS burst.
# NETX_DB_POOL_SIZE=20
# NETX_DB_MAX_OVERFLOW=20
# --- Production-recommended capacity (defaults in Settings already match these) ---
# NETX_DB_POOL_SIZE=25
# NETX_DB_MAX_OVERFLOW=15
# NETX_DB_POOL_RECYCLE_SEC=1800
# NETX_DB_POOL_TIMEOUT_SEC=30
# Global SSH/Netmiko concurrency across discover / collect / config_sync / port_traffic.
# NETX_CLI_MAX_CONCURRENT=20
# NETX_CLI_TIMEOUT_POOL_WORKERS=16
# NETX_PORT_TRAFFIC_DISPATCH_WORKERS=4
# NETX_AUDIT_QUEUE_MAX=5000
# NETX_NE_COLLECT_MAX_OUTPUT_BYTES=8388608
# NETX_WEBCRT_SESSION_LOG_MAX_BYTES=4194304
# NETX_CLI_MAX_CONCURRENT=12
# NETX_CLI_FEATURE_HARD_CAP=16
# NETX_CLI_TIMEOUT_POOL_WORKERS=12
# NETX_PORT_TRAFFIC_DISPATCH_WORKERS=3
# NETX_NE_CONNECT_MAX_WORKERS=4
# NETX_NE_COLLECT_MAX_WORKERS=4
# NETX_NE_COLLECT_RUN_TIMEOUT_CAP_SEC=480
# NETX_NE_COLLECT_MAX_OUTPUT_BYTES=4194304
# NETX_WEBCRT_MAX_SESSIONS=12
# NETX_WEBCRT_KEEPALIVE_SEC=30
# NETX_WEBCRT_OUT_QUEUE_MAX=1500
# NETX_WEBCRT_SESSION_LOG_MAX_BYTES=2097152
# NETX_WEBCRT_SFTP_MAX_FILE_BYTES=268435456
# NETX_AUDIT_ASYNC=true
# NETX_AUDIT_SAMPLE_N=10
# NETX_AUDIT_QUEUE_MAX=2000
# NETX_OCLAW_FORWARD_QUEUE_MAX=2000
# NETX_OCLAW_FORWARD_MAX_RETRIES=3
# Lab-only raises (optional): higher CLI/DB when bastion and Postgres are sized for it.