我需要保护mysql进程,这样当系统内存不足时它就不会被杀死,我们不时在服务器上运行一堆临时作业,所以我更喜欢杀死临时作业而不是mysql。
我知道我可以调整 oom_score_adj,通过将其设置为 -1000,我可以将其排除在 OOM 杀手的考虑范围之外。但我不确定是否需要重新启动mysql进程才能使新的oom_score_adj生效?调整正在运行的进程的oom_score_adj是否仍然有效?
我正在关注这篇文章,没有其他人提到重新启动服务器以使新的 oom_score_adj 生效: https: //blog.rimuhosting.com/2015/12/11/dont-let-the-oom-killer-stop-mysql/
另一个愚蠢的问题是我似乎无法写入 oom_score_adj 文件,总是被拒绝权限。oom_score_adj 不属于 root,我尝试了几个选项,但不断遇到权限问题:
echo "echo '-100' > /proc/5653/oom_score_adj" | sudo -u {file_owner} sh
Run Code Online (Sandbox Code Playgroud)
感谢您的帮助!
RHEL7 使用 systemd。 使用 OOMScoreAdjust如下:
sudo systemctl edit mysqld.service
Run Code Online (Sandbox Code Playgroud)
注意:我不确定确切的服务名称
添加以下文本:
[Service]
OOMScoreAdjust=-1000
Run Code Online (Sandbox Code Playgroud)
重新启动:
systemctl restart mysqld.service
Run Code Online (Sandbox Code Playgroud)
通过查看分数来检查:
cat /proc/$(pidof mysqld)/oom_score_adj
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
9229 次 |
| 最近记录: |