You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何解决AWS上Directus的CPU占用过高性能问题?

Directus高CPU负载及502错误排查分析

环境与配置

我们在AWS的t3.2xlarge实例(8 vCPUs/32GB内存)上部署了Directus,项目规模较小且几乎无流量,采用Redis(AWS ElastiCache)和PostgreSQL(AWS RDS)作为组件,通过Docker运行,相关配置如下:

directus:
  restart: always
  image: directus/directus:11.0.2
  ports:
    - 80:80
  environment:
    CORS_ENABLED: 'true'
    PORT: '80'
    
    CORS_ORIGIN: 'true'
    CORS_METHODS: 'GET,POST,PATCH,DELETE,OPTIONS'
    KEY: '***'
    SECRET: '***'

    DB_CLIENT: 'pg'
    DB_HOST: '***.us-east-1.rds.amazonaws.com'
    DB_PORT: '5432'
    DB_DATABASE: 'postgres'
    DB_USER: '***'
    DB_PASSWORD: '***'

    STORAGE_LOCATIONS: 's3'
    STORAGE_S3_DRIVER: 's3'
    STORAGE_S3_KEY: '***'
    STORAGE_S3_SECRET: '***'
    STORAGE_S3_BUCKET: '***'
    STORAGE_S3_REGION: 'us-east-1'
    STORAGE_S3__ENDPOINT: 's3.us-east-1.amazonaws.com'

    EMAIL_FROM: 'no-reply@***'
    EMAIL_TRANSPORT: 'mailgun'
    EMAIL_MAILGUN_API_KEY: '***'
    EMAIL_MAILGUN_DOMAIN: '***'

    CACHE_ENABLED: 'true'
    CACHE_STORE: 'redis'
    CACHE_AUTO_PURGE: 'true'
    REDIS: 'redis://***.use1.cache.amazonaws.com:6379'

    CONTENT_SECURITY_POLICY_DIRECTIVES__FRAME_SRC: "***"
    CONTENT_SECURITY_POLICY_DIRECTIVES__IMG_SRC: "array:'self',data:,https://*"

    PM2_INSTANCES: '8'
    PM2_AUTO_RESTART: 'true'
    
    PRESSURE_LIMITER_ENABLED: 'false'

问题描述

即使发起读取单个集合的简单API请求,PM2中也会出现CPU负载,多次请求后Directus会冻结并返回502错误。尝试过多种配置及最新版本,但均未解决问题。此前一年左右的旧版本Directus(Docker部署,含DB+Directus)运行正常。

可能的原因分析

  • PM2实例数配置不合理:设置PM2_INSTANCES: '8'与实例vCPU数一致,但低流量场景下,过多的Node.js进程会加剧资源竞争,增加CPU上下文切换开销,反而降低性能。旧版本可能未启用多实例或实例数更少,避免了此类问题。
  • Redis连接或缓存逻辑问题:Redis与Directus实例间的网络延迟、Redis资源不足(内存/连接数限制),或CACHE_AUTO_PURGE: 'true'导致的频繁缓存清理操作,都可能让Directus进程阻塞等待,引发CPU负载异常。
  • PostgreSQL性能瓶颈:新版本Directus的查询复杂度可能提升(如更多元数据查询、关联查询),若RDS实例配置不足(CPU/内存不够),或存在低效SQL,会导致数据库响应缓慢,拖垮Directus进程。建议检查RDS监控指标(CPU使用率、查询等待时间)。
  • 新版本性能回归:从旧版本升级到v11.0.2可能存在未被修复的性能bug,比如中间件、插件逻辑优化不当,导致简单请求也触发高CPU消耗。可尝试回退到旧版本对比验证。
  • CSP配置格式错误:CONTENT_SECURITY_POLICY_DIRECTIVES__IMG_SRC的array:'self',...格式不符合Directus要求,正确的数组类型配置应使用JSON数组格式(如["'self'", "data:", "https://*"]),错误配置可能引发解析异常,导致CPU消耗或进程崩溃。
  • 压力限制器禁用导致资源耗尽:PRESSURE_LIMITER_ENABLED: 'false'关闭了内置限流机制,请求堆积时进程无限制处理,最终导致CPU占满、进程冻结。旧版本可能默认启用该机制,避免资源耗尽。

内容的提问来源于stack exchange,提问作者Stan Shvaika

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.18 19:34:55