如何稳定
1. 内存泄漏没人管
2. 进程挂了没人拉起
3. 没限流,被打爆
4. 数据库连接用崩
5. 日志不可观测1. 进程必须可重启
2. 请求必须可限流
3. 内存必须可控
4. 数据库连接必须受限
5. 系统必须可观测内存限制
node --max-old-space-size=512 dist/index.js全局错误检查
process.on('uncaughtException', ...)
process.on('unhandledRejection', ...)健康检查接口
GET /health应用层限流
rate-limiter-flexible
builder
esbuild / tsup
多少个节点合适?
CPU 核数 * 1~1.5
docker-compose
todo
yml
services:
nginx:
image: nginx:alpine
ports:
- "8080:80"
volumes:
- ./nginx.conf:/etc/nginx/nginx.conf:ro
depends_on:
- app
networks:
- app_net
app:
build: .
command: node --max-old-space-size=512 dist/index.js
restart: always
expose:
- "3000"
environment:
- NODE_ENV=production
- DB_HOST=postgres
depends_on:
- postgres
networks:
- app_net
postgres:
image: postgres:15
environment:
POSTGRES_USER: user
POSTGRES_PASSWORD: pass
POSTGRES_DB: app
volumes:
- pgdata:/var/lib/postgresql/data
networks:
- app_net
networks:
app_net:
volumes:
pgdata: