# SOCKS Manager — systemd unit (authoritative source) # # 这个文件是服务器上 /etc/systemd/system/socks-manager.service 的唯一定义源。 # 修改流程: # 1. 编辑本文件 # 2. 提交并 push 到 origin # 3. 在生产机执行: bash deploy/install.sh # # 调优说明(按机器规格): # -w N gunicorn worker 数。1 核 CPU 建议 1,2 核建议 2。 # --timeout 30 HTTP 请求行/头/体的总超时(秒)。网络扫描器发 PRI * HTTP/2.0 这类 # 半截请求会占满 worker,30s 既能容忍慢客户端也能及时回收。 # --graceful-timeout 30 systemd 停止时给 worker 写完响应的最大等待时间。 # --max-requests 1000 worker 处理 N 个请求后自杀重启,防止内存泄漏累积。 # --max-requests-jitter 100 错峰重启,避免所有 worker 同时重启。 # MemoryMax=512M cgroup 内存硬上限,超限立即 OOM kill,保护宿主机。 # LimitNOFILE=65535 SOCKS5 代理每个实例一个监听 socket + 大量客户端连接, # 默认 1024 远远不够。 [Unit] Description=SOCKS5 Proxy Manager After=network.target [Service] Type=notify User=root WorkingDirectory=/opt/socks-manager Environment="PATH=/usr/local/bin:/usr/bin:/bin" # 生产环境变量(按需修改)— 敏感信息建议放到 /opt/socks-manager/.env 或 # /etc/socks-manager/socks-manager.env,用 EnvironmentFile= 引入,不要写进 git。 Environment="SM_ADMIN_PASSWORD=test123" Environment="SM_SECRET_KEY=xxxx111wwwddadljkkjkjnmooihjklhhgk" Environment="SM_LOG_LEVEL=WARN" # Environment="SM_COOKIE_SECURE=true" # HTTPS 时开启 # Environment="SM_SESSION_DOMAIN=你的域名或IP" # 跨域时设置 ExecStart=/usr/local/bin/gunicorn \ -w 1 \ -b 0.0.0.0:5000 \ --timeout 30 \ --graceful-timeout 30 \ --max-requests 1000 \ --max-requests-jitter 100 \ --limit-request-line 8190 \ --limit-request-fields 100 \ --limit-request-field_size 8190 \ run:app # 优雅关闭:先给 SOCKS5 实例时间关闭活跃连接 ExecStop=/bin/kill -s TERM $MAINPID TimeoutStopSec=60 Restart=always RestartSec=5 # 资源限制:1GB 内存的 VPS 单 worker 留 512M 足够,超了立刻被 OOM kill 而非慢慢拖死整机 MemoryMax=512M MemoryHigh=384M LimitNOFILE=65535 [Install] WantedBy=multi-user.target