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
    • 最新
    • 标签
主页 / server / 问题 / 485798
Accepted
matteo
matteo
Asked: 2013-03-08 14:17:37 +0800 CST2013-03-08 14:17:37 +0800 CST 2013-03-08 14:17:37 +0800 CST

Cent OS:如何关闭或减少内存过度使用,这样做是否安全?

  • 772

“我的”服务器有时会因为内存和交换空间都用完而停止运行。(它一直响应 ping 但仅此而已,甚至没有 ssh)。

有人告诉我 linux 会内存过度使用,据我所知,这与银行对金钱的处理方式相同:它授予进程比实际可用内存更多的内存,假设大多数进程实际上不会使用他们要求的所有内存,在至少不是同时。

请假设这实际上是我的系统偶尔挂起的原因,我们在这里不讨论是否是这种情况(请参阅什么会导致服务器上的所有服务停止运行,但仍响应 ping?以及如何弄清楚) .

所以,

  1. 我如何在 CentOS 中禁用或大幅减少内存过度使用?我读过有两个设置称为 vm.overcommit_memory(值 0、1 或 2)和 vm.overcommit_ratiom 但我不知道我必须在哪里找到和更改它们(希望是一些配置文件),我应该尝试什么值,以及我是否需要重新启动服务器以使更改生效。

  2. 安全吗?我可以期待什么副作用?在谷歌搜索 overcommit_memory 时,我发现一些可怕的事情,比如人们说他们的服务器无法再启动......

由于导致内存使用量突然增加的原因是 mysql,因为 php 进行的查询又在服务 http 请求时被调用,我希望只有一些 php 脚本无法完成,因此时不时会有大约 500 个响应服务器太忙,这是我可以承担的风险(当然更好的是让整个服务器变得无法访问并且必须硬重启它)。

或者如果我选择了错误的设置,它真的会导致我的服务器无法重启吗?

linux
  • 3 3 个回答
  • 26449 Views

3 个回答

  • Voted
  1. Best Answer
    Soham Chakraborty
    2013-03-19T09:18:00+08:002013-03-19T09:18:00+08:00

    可以通过以下方式禁用内存过量使用vm.overcommit_memory=2

    0 是默认模式,其中内核通过计算与发出的分配请求相比的空闲内存来试探性地确定分配。将它设置为 1 会启用魔法模式,在这种模式下,内核总是通告它有足够的空闲内存来进行任何分配。设置为 2,意味着进程最多只能分配可配置数量 ( overcommit_ratio) 的 RAM,并且当超过该数量时将开始获取分配失败或 OOM 消息。

    这样做安全吗,不。除非您 100% 确定工作负载和硬件容量,否则我还没有看到任何适当的用例可以证明禁用内存过量使用实际上有帮助。如果您有兴趣,请安装kernel-docs软件包并转到/Documentation/sysctl/vm.txt阅读更多内容,或在线阅读。

    如果您设置vm.overcommit_memory=2,那么它将过量使用配置的物理 RAM 的百分比vm.overcommit_ratio(默认为 50%)。

    echo 0/1/2 > /proc/sys/vm/overcommit_memory 
    

    这将无法在重启后继续存在。为了持久性,将其放入/etc/sysctl.conf文件中:

    vm.overcommit_memory=X
    

    并运行sysctl -p。无需重启。

    • 33
  2. Florian Heigl
    2013-07-19T10:19:06+08:002013-07-19T10:19:06+08:00

    完全不合格的说法:禁用内存过量使用绝对比启用它“更安全”。

    $customer 已在数百台 Web 服务器上设置它,它对解决稳定性问题有很大帮助。如果 Nagios 从未被禁用,甚至还有一个 Nagios 检查会大声呼叫火警。

    另一方面,当人们只想过度使用一个小 ram 并且永远不会真正使用它时,他们可能不会认为让他们的进程内存不足是“安全的”。(即 SAP 将是一个很好的例子)

    所以,你回头看看它是否对你有所改善。由于您已经在研究它以消除相关问题 - 我认为它可能对您有所帮助。

    (我知道我会冒着被某个脾气暴躁的人投反对票的风险)

    • 7
  3. user185690
    2013-08-15T19:08:37+08:002013-08-15T19:08:37+08:00

    我同意在某些情况下禁用过度使用比启用它更安全。如果服务器只运行很少的大内存作业(比如我的电路模拟),那么提前拒绝应用程序内存请求比等待 OOM 事件(肯定会很快发生)要安全得多我们经常看到服务器在 OOM 杀手完成其工作后出现问题。

    • 4

相关问题

  • Linux 主机到主机迁移

  • 如何在 Linux 机器上找到有关硬件的详细信息?

  • 如何在 Linux 下监控每个进程的网络 I/O 使用情况?

  • 在 RHEL4 上修改 CUPS 中的现有打印机设置

  • 为本地网络中的名称解析添加自定义 dns 条目

Sidebar

Stats

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

    新安装后 postgres 的默认超级用户用户名/密码是什么?

    • 5 个回答
  • Marko Smith

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

    命令行列出 Windows Active Directory 组中的用户?

    • 9 个回答
  • Marko Smith

    什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同?

    • 3 个回答
  • Marko Smith

    如何确定bash变量是否为空?

    • 15 个回答
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    Noah Goodrich 什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent 如何确定bash变量是否为空? 2009-05-13 09:54:48 +0800 CST
  • Martin Hope
    cletus 您如何找到在 Windows 中打开文件的进程? 2009-05-01 16:47:16 +0800 CST

热门标签

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

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

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve