主页 > IT业界  > 

跑代码过程中遇到killed解决策略

跑代码过程中遇到killed解决策略

目录

一、引言

二、解决

第一步:查看日志,确认问题

第二步:解决方法

第一种:增加交换空间

第二种:调整内存分配策略


一、引言

简要描述问题:在跑代码时,程序突然被终止,命令行提示 "Killed"。

这个问题通常是由于系统内存不足,触发了 Linux 的 OOM Killer 机制。

本文将分享如何通过查看日志、增加交换空间、调整内存分配策略等方法解决这个问题。

二、解决 第一步:查看日志,确认问题

使用dmesg查看系统日志

sudo dmesg | grep -i "killed"

如果有看到 Out of memory  可以确定是内存不足的问题

第二步:解决方法 第一种:增加交换空间

什么是交换空间?

交换空间是磁盘上的一块区域,当物理内存不足时,系统会将部分内存数据转移到交换空间,以腾出物理内存。

虽然交换空间的速度比物理内存慢,但可以避免程序因内存不足而被终止。

如何增加交换空间?

1.创建交换文件 (大小为20G)

sudo fallocate -l 20G /swapfile_new

2.设置权限

sudo chmod 600 /swapfile_new

3.格式化为交换空间

sudo mkswap /swapfile_new

4.启用交换文件

sudo swapon /swapfile_new

5.验证交换空间

sudo swapon --show free -h

6.永久生效

编辑/etc/fstab文件,添加以下内容

/swapfile_new none swap sw 0 0

【扩展】详细步骤

在编辑之前,最好先备份/etc/fstab文件,以防操作失误导致系统无法启动

sudo cp /etc/fstab /etc/fstab.backup

使用nano文本编辑器打开/etc/fstab文件

sudo nano /etc/fstab

添加文件交换配置(在文末添加)

/swapfile_new none swap sw 0 0

其中

/swapfile_new:你创建的交换文件的路径。

none:表示没有挂载点。

swap:表示文件类型为交换空间。

sw:表示挂载选项为 swap。

0 0:表示不进行文件系统检查和备份。

验证/etc/fstab文件(检查是否有语法错误)

sudo mount -a

如果没有错误提示,则说明文件编辑成功

第二种:调整内存分配策略

当系统内存不足时,Linux 内核会通过 OOM Killer 终止占用内存最多的进程。为了避免这种情况,可以通过调整内存分配策略来优化系统的内存管理。

具体来说,可以通过修改以下两个内核参数来实现:

vm.overcommit_memory:控制系统的内存分配策略。

vm.overcommit_ratio:定义允许分配的内存总量。

参数说明

vm.overcommit_memory

0(默认值):启发式超额分配。

系统会尝试估算可用内存,并根据一定的策略决定是否允许内存分配。

如果系统认为内存不足,可能会拒绝某些内存分配请求。

1:总是允许超额分配。

系统总是允许内存分配,即使当前内存不足。

这可能会导致系统在内存耗尽时触发 OOM Killer 来终止进程。

2:禁止超额分配。

系统会拒绝超过一定比例的内存分配请求,比例由 overcommit_ratio 决定。

允许分配的内存总量为:物理内存 × overcommit_ratio% + 交换空间。

vm.overcommit_ratio

当 vm.overcommit_memory=2 时,定义系统允许分配的内存总量。

默认值通常是 50(即 50%)。

如何调整参数?

临时调整(重启后失效)【建议】

sudo sysctl vm.overcommit_memory=2

sudo sysctl vm.overcommit_ratio=98

注:参数值根据情况进行设定

永久调整(重启后依旧生效)

如果你希望调整后的参数在系统重启后依然生效,可以编辑 /etc/sysctl.conf 文件

打开 /etc/sysctl.conf 文件:

sudo nano /etc/sysctl.conf

在文件末尾添加以下内容:

vm.overcommit_memory=2 vm.overcommit_ratio=98

保存并退出编辑器

运行以下命令使配置生效:

sudo sysctl -p

验证参数是否生效

cat /proc/sys/vm/overcommit_memory cat /proc/sys/vm/overcommit_ratio

标签:

跑代码过程中遇到killed解决策略由讯客互联IT业界栏目发布,感谢您对讯客互联的认可,以及对我们原创作品以及文章的青睐,非常欢迎各位朋友分享到个人网站或者朋友圈,但转载请说明文章出处“跑代码过程中遇到killed解决策略