jupyter notebook上传大小限制由c.notebookapp.max_body_size和c.notebookapp.max_buffer_size两个配置项控制,均位于~/.jupyter/jupyter_notebook_config.py中;前者限制http请求整体大小(默认512mb),后者控制tornado缓冲区上限(默认512mb),修改后须彻底重启jupyter服务才生效。

上传大小限制由哪几个配置项控制
Jupyter Notebook 本身不直接提供 max_upload_size 这类参数,上传限制实际由两层决定:前端 Web 框架(Tornado)的请求体限制,以及后端文件处理逻辑的隐式约束。关键配置项只有两个:c.NotebookApp.max_body_size 和 c.NotebookApp.max_buffer_size,它们都写在 ~/.jupyter/jupyter_notebook_config.py 里。
-
c.NotebookApp.max_body_size:控制 HTTP POST 请求整体大小(单位字节),包括文件内容 + 表单元数据。默认值是536870912(512MB),超过即报413 Request Entity Too Large -
c.NotebookApp.max_buffer_size:Tornado 内部缓冲区上限,影响大文件流式读取稳定性。默认536870912,若设得太小(如 10MB),即使max_body_size足够,也可能触发ConnectionResetError或静默失败
修改配置后必须重启服务才生效
改完配置文件不能只刷新页面——Jupyter 服务器进程得完全重启。常见错误是改了 jupyter_notebook_config.py 却只关掉浏览器标签页,后台服务还在跑旧配置。
使用ydata-profiling(前身为pandas-profiling)生成全面的数据质量报告,包含相关性分析、缺失值模式和基数检测。导出交互式HTML仪表板和JSON摘要。
- 先用
ps aux | grep jupyter找到进程 PID,执行kill -9 PID彻底终止 - 再运行
jupyter notebook --config=~/.jupyter/jupyter_notebook_config.py启动(显式指定配置路径更可靠) - 验证是否生效:上传一个略超限的文件(比如设为 100MB 后传 105MB 的 zip),应明确看到浏览器返回
413错误页,而非卡住或报错File not found
注意和 JupyterLab 的区别
如果你用的是 JupyterLab(不是 classic Notebook),上传路径和限制逻辑不同:它走的是 /api/contents 接口,且部分部署环境(如 ModelArts、Kubeflow)会额外叠加对象存储中转逻辑。此时修改 jupyter_notebook_config.py 可能无效。
- JupyterLab 本地部署时,同样依赖
c.NotebookApp.max_body_size,但需确认你启动的是jupyter lab且配置文件路径正确(jupyter lab --generate-config生成的路径可能不同) - 云平台托管的 JupyterLab(如华为 ModelArts)上传大文件会自动走 OBS 中转,此时前端限制形同虚设,真正瓶颈在 OBS 权限、带宽和临时存储空间
- 若上传卡在“等待上传”或进度条不动,优先检查是否触发了平台侧的中间层限流,而不是 Notebook 配置
上传超限后的真实表现和排查线索
上传失败不一定报错明显,容易误判为网络问题。关键线索藏在浏览器开发者工具的 Network 标签页和服务器终端日志里。
- Network 中看
POST /api/contents请求:状态码413→ 确认是配置限制;0或pending→ 可能是max_buffer_size不足或反向代理(如 Nginx)拦截 - 终端日志出现
Max body size exceeded→max_body_size生效;出现StreamClosedError或无日志 →max_buffer_size过小或内存不足 - 上传 100MB 文件失败但 50MB 成功,别急着调高配置——先检查磁盘剩余空间,
/tmp或~/.jupyter所在分区满也会导致静默失败










