记:一个奇怪的增加内存占用的方法
近期有个很奇怪的需求,因某台服务器的内存闲置过久会被通知回收或降配,除非“用起来”,那既然真实“用不起来”,那就安全但邪恶地占用起来吧,以下是我与 AI 沟通出来的一个法子(有待长时间观察效果)。
第一步:准备工作
安装好 Python3第二步:创建程序
创建一个可运行的 Python 程序,例如命名 memhold.py
填入内容,保存
#!/usr/bin/env python3
SIZE_GB = 10 # 根据服务器调整,计划占用的内存大小
buf = bytearray(SIZE_GB * 1024 * 1024 * 1024)
# 每页写一次,确保真正分配物理内存
for i in range(0, len(buf), 4096):
buf[i] = 1
print("memory allocated")
import time
while True:
time.sleep(600)第三步:设置后台及开机启动
创建 service 文件
/etc/systemd/system/memhold.service填入内容,保存
[Unit]
Description=Memory Holder
[Service]
Type=simple
ExecStart=/usr/bin/nice -n 19 /usr/bin/python3 /opt/memhold.py
Restart=always
OOMScoreAdjust=900
[Install]
WantedBy=multi-user.target配置加载与开机启动
systemctl daemon-reload
systemctl enable --now memhold如需停止与移除开机启动
systemctl stop memhold
systemctl disenable memhold 部分解释: OOMScoreAdjust=900:设置为最容易被 OOM Killer 回收,当系统真的发生内存不足时,这个"保内存"程序会优先被终止,而不是你的业务服务。
最后:测试效果
- 通过
top或free -m等命令查看内存占用情况。 - 也可直接用
top -p $(pgrep -f memhold.py | paste -sd,)查看memhold进程的运行情况。 - 此时也可观察 CPU 是无变化的,因为以上方式并未让 CPU 活跃起来,有需要的可以让 AI 协助增加点 CPU 活跃度。
完结,撒花。
本作品采用 知识共享署名-相同方式共享 4.0 国际许可协议 进行许可。
评论已关闭