Skip to content

如何稳定

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: