Linux下Jupyter报MemoryError但Python脚本正常的问题排查
Linux下Jupyter Notebook内存分配受限排查问题
系统环境
NAME="CentOS Linux" VERSION="7 (Core)" ID="centos" ID_LIKE="rhel fedora" VERSION_ID="7"
内存状态(充足)
total used free shared buff/cache available Mem: 125G 3.3G 104G 879M 17G 120G
使用的Anaconda版本
64位Anaconda3-2022.10-Linux-x86_64
已配置项
- 在
jupyter_notebook_config.json和jupyter_notebook_config.py中设置max_buffer_size为64GB - Notebook启动命令指定参数:
jupyter notebook --certfile=ssl/mycert.perm --keyfile ssl/mykey.key --no-browser --NotebookApp.max_buffer_size=64000000000
- 系统内存过度提交配置:
cat /proc/sys/vm/overcommit_memory 1
测试情况
1. 独立Python脚本运行
执行代码:
size = int(6e9) chunk = size * ['r'] print(chunk.__sizeof__()/1e9)
运行结果:
python ../readgzip.py 48.00000004
成功为列表分配48GB内存,无异常。
2. Jupyter Notebook中运行
执行代码:
size = int(9.7e8) chunk = size * ['r'] print(chunk.__sizeof__()/1e9)
输出:
7.76000004
当将size调整为int(9.75e8)时,触发内存错误:
--------------------------------------------------------------------------- MemoryError Traceback (most recent call last) /tmp/ipykernel_12328/3436837519.py in <module> 1 size = int(9.75e8) ----> 2 chunk = size * ['r'] 3 print(chunk.__sizeof__()/1e9) MemoryError:
对比情况
家中Windows11机器(64GB内存)可轻松运行上述代码,成功分配32GB内存。
疑问
已做上述配置,但Linux下Jupyter Notebook仍无法分配足够内存,请问遗漏了哪些配置项?
内容的提问来源于stack exchange,提问作者David Makovoz
相关产品推荐
相关产品推荐

