AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / ubuntu / 问题 / 1513917
Accepted
Goibnhiuu
Goibnhiuu
Asked: 2024-05-14 02:54:18 +0800 CST2024-05-14 02:54:18 +0800 CST 2024-05-14 02:54:18 +0800 CST

Ubuntu 22.04.4 LTS,交换有时有效,有时会使 python 崩溃

  • 772

操作系统:Ubuntu 22.04.4 LTS,64 位,64Gb RAM

蟒蛇:3.9.19

概括:

  • 在 Python 中运行内存密集型分析会导致 Python 在大多数情况下崩溃,但并非总是如此。
  • 当 RAM 耗尽并且 Python 开始使用虚拟内存时,就会特别发生崩溃。
  • 其他程序(ImageJ)能够使用虚拟内存而不会崩溃,这使得问题看起来像是 python 特有的。
  • 分析最初是在运行 python 3.9 的环境中在 Anaconda3 中运行,但在运行 python 3.11 的不同 anaconda 环境中以及在 Ubuntu 22.04 本机 python 3.10 中运行时崩溃行为仍然存在。
  • 当 python 崩溃时,它不会生成任何dmesg()报告。
  • 增加交换文件大小没有帮助。
  • 在不同的驱动器上添加交换文件没有帮助。
  • 增加或减少 vm.swappiness 没有帮助。
  • 更改 vm.overcommit_memory 行为没有帮助。
  • journalctl -xe实际上确实包含了一份崩溃报告,表明 system-oomd 由于高内存压力而终止了进程,尽管报告的内存使用统计信息与系统监视器记录的内存使用情况不匹配。

原问题:

我有一台本质上全新的 ubuntu 机器,我一直在尝试用它在 python 中执行一些内存密集型处理。

最初,我遇到了一个问题,每当我尝试执行任何内存密集型操作时,我的 python 内核都会被终止,并且我会在 python 中收到“内存不足”错误。

我发现,不知何故,当我最初安装 Ubuntu 时,我的交换文件大小为 2GB,这显然是问题所在。我设置了一个 120GB 的新文件,之后就再也没有遇到过这个问题。

相反,我遇到的情况是,80% 的情况下,当 python 耗尽 RAM 并开始使用交换时,python 就会完全崩溃并关闭。没有错误消息,dmesg 日志中也没有添加任何内容,它只是关闭。

特别令人恼火的是,这种情况只发生在 80% 的情况下。20% 的情况下,运行相同的代码且其他所有内容都完全相同,程序运行完全正常,没有任何问题。它耗尽了 RAM,并开始使用交换区,只要交换区没有用完,一切都会成功。

我尝试过更改 swappiness,但这似乎根本没有任何效果。我注意到交换文件的优先级设置为 -1,所以我先将其更改为 1,然后更改为 0,但这些都不起作用。

我什至尝试在 python 中运行一小段代码,它只会消耗内存,以查看问题是否专门与我正在运行的分析有关,但不是。RAM 被用完,交换文件使用了分配的 120GB 中的 7-12GB,然后 Python 崩溃了。

更新:除了 2tb 操作系统磁盘上的交换文件之外,我还尝试在 8tb 内部存储 HDD 上添加第二个交换文件,这工作了一段时间。python 脚本会达到 99% RAM 使用率,然后写入内容进行交换,RAM 使用率会暂时下降,等等。然而,运行脚本几次后,行为恢复到之前的状态,其中 RAM 使用率上升到 99%,交换使用率增加到约 10GB,但 RAM 使用率从未下降,交换使用率停止增加,然后 python 崩溃。

python
  • 1 1 个回答
  • 50 Views

1 个回答

  • Voted
  1. Best Answer
    Goibnhiuu
    2024-05-20T22:10:46+08:002024-05-20T22:10:46+08:00

    我最终擦除了我的操作系统并重新安装了 Ubuntu 24.04。从此以后,python就能够成功使用虚拟内存而不会崩溃了。

    仍然不确定问题的根源到底是什么,但这似乎已经解决了。

    • 0

相关问题

  • 默认的字符编码是什么?

  • 如何使用 pynotify 创建可点击通知?

  • 有没有安装 Django 1.2.*(最新稳定版)的简单方法?

  • 为 Python 应用程序设置构建系统

  • 为我的 PPA 创建包时遇到问题

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    如何运行 .sh 脚本?

    • 16 个回答
  • Marko Smith

    如何安装 .tar.gz(或 .tar.bz2)文件?

    • 14 个回答
  • Marko Smith

    如何列出所有已安装的软件包

    • 24 个回答
  • Marko Smith

    无法锁定管理目录 (/var/lib/dpkg/) 是另一个进程在使用它吗?

    • 25 个回答
  • Martin Hope
    Flimm 如何在没有 sudo 的情况下使用 docker? 2014-06-07 00:17:43 +0800 CST
  • Martin Hope
    Ivan 如何列出所有已安装的软件包 2010-12-17 18:08:49 +0800 CST
  • Martin Hope
    La Ode Adam Saputra 无法锁定管理目录 (/var/lib/dpkg/) 是另一个进程在使用它吗? 2010-11-30 18:12:48 +0800 CST
  • Martin Hope
    David Barry 如何从命令行确定目录(文件夹)的总大小? 2010-08-06 10:20:23 +0800 CST
  • Martin Hope
    jfoucher “以下软件包已被保留:”为什么以及如何解决? 2010-08-01 13:59:22 +0800 CST
  • Martin Hope
    David Ashford 如何删除 PPA? 2010-07-30 01:09:42 +0800 CST

热门标签

10.10 10.04 gnome networking server command-line package-management software-recommendation sound xorg

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve