我对使用服务器还很陌生,但最近遇到了瓶颈,不得不在云端进行计算。使用服务器 2 周后,似乎出现了一些内存问题。
我使用服务器来存储 Jupyter 笔记本和大文件。我将大文件加载到 Jupyter 笔记本中,前两周我的文件加载没有问题。然而今天,我遇到了一个又一个的内存问题。情况非常糟糕,即使我关闭了所有活动的笔记本并运行了我的前几个笔记本,由于内存问题,这些笔记本都无法正常工作。
使用 TOP 命令时,它显示我大约有 90% 的内存可用。但是,它却让我无法顺利运行过去两周一直在运行的代码。
所以我想知道我是否应该定期重启服务器或采取其他措施来解决这个问题。或者是其他原因。
谢谢!
答案1
如果您在 Jupyter 笔记本中加载文件并将其内容存储在变量中,则只要该变量存在且笔记本正在运行,底层 Python 进程就会保持为该数据分配的内存。Python 的垃圾收集器如果检测到不再需要数据,将再次释放内存(大多数情况下)。如果使用以下方法删除数据,则会出现这种情况:德尔,如果变量被其他内容覆盖或者超出范围(函数末尾的局部变量)。
如果您在数周内将大型文件存储在(不同的)变量中,数据将保留在内存中并最终填满内存。在这种情况下,您实际上可能必须手动关闭笔记本或使用其他方法来删除(全局)变量。
同一类问题的另一个完全不同的原因可能是 Jupyter 中的错误。这类错误称为内存泄漏,通常发生在长时间运行的服务器进程中。即使它们在 Python 中发生的可能性较小,但也存在一些 漏洞 报告对于 Jupyter。在这种情况下,唯一的解决方法可能是重新启动 Jupyter 进程。在其他情况下,我建议这样做。