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

Express文件上传本地正常但cPanel上仅大文件失败问题求助

Express文件上传本地正常但cPanel上仅大文件失败问题求助

我最近碰到个棘手的问题,想请教各位大佬:我开发了一个Express项目,支持上传CSV文件并导入数据库,之前本地和cPanel部署都运行正常,但最近cPanel上的上传接口彻底失效了——其他接口都能正常响应,唯独上传功能不管用。

我甚至写了个极简的测试接口,代码如下:

// ./controller/customer-service.js
const addCustomerByImport = async (req, res, next) => {
    try {
        res.status(200).json("success")
    } catch (e) {
        next(e)
    }
}

结果这个接口对大文件还是没反应,只有几KB的小CSV能正常触发返回,2MB左右的文件就完全没响应。另外我注意到cPanel的SWAP内存使用率已经到100%了,不知道会不会影响?

想请教下可能的原因和解决办法,谢谢大家!


可能的原因及排查方向:

  • cPanel的PHP上传限制
    很多cPanel主机默认的PHP上传参数很小,刚好会卡到2MB这个阈值:

    1. 登录cPanel找到MultiPHP INI Editor,检查这几个参数:
      • upload_max_filesize:默认可能是2MB,改成10MB以上
      • post_max_size:必须比upload_max_filesize大,比如设为12MB
      • max_execution_time:大文件上传和解析需要更长时间,改成60或120
    2. 另外如果用了multer这类文件上传中间件,检查中间件的limits配置,比如multer({ limits: { fileSize: 2 * 1024 * 1024 } })会限制2MB,需要调大这个值。
  • SWAP内存耗尽的影响
    SWAP使用率100%肯定会有影响:
    当物理内存不足时,服务器会用SWAP虚拟内存,但SWAP速度远慢于物理内存,大文件上传时需要更多内存处理(比如缓存文件、解析CSV),SWAP满了之后进程可能被系统杀死或者卡死。
    解决办法:

    • 如果有SSH权限,先尝试重置SWAP:sudo swapoff -a && sudo swapon -a
    • 长期来看,建议升级服务器物理内存,或者优化代码,比如用流式解析CSV(比如csv-parser),不要把整个文件加载到内存里。
  • cPanel的安全规则拦截
    部分主机商的ModSecurity或者防火墙规则会拦截大文件上传,认为是恶意请求:

    • 可以联系主机商查看ModSecurity的日志,确认有没有相关拦截记录
    • 临时关闭ModSecurity测试(注意安全),如果关闭后正常,就需要让主机商调整对应的规则。
  • 超时设置过短
    大文件上传需要更长的传输时间,如果超时设置太短会导致请求被中断:

    • 检查Express的服务器超时设置:server.timeout = 60000;(设置为60秒)
    • 检查cPanel里Apache/Nginx的超时配置,比如Apache的Timeout指令、Nginx的proxy_read_timeout,确保值足够大。

备注:内容来源于stack exchange,提问作者Austinnick

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.15 12:49:31