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 / 问题 / 63128
Accepted
Cory Walker
Cory Walker
Asked: 2009-09-08 12:54:18 +0800 CST2009-09-08 12:54:18 +0800 CST 2009-09-08 12:54:18 +0800 CST

服务器使用过多内存并导致服务器崩溃

  • 772

我有一个 256MB 内存的小型家用服务器。我的一个网站刚刚在 Reddit 上链接,因为我有两次系统使用过多的内存并且崩溃到我必须手动重启的地步。有时我的物理内存使用率上升到危险的 90%,而我的 mysql 和 apache 服务每个消耗大约 100MB。我怀疑正在发生的事情是大量访问者来了,并且系统在将一些内存移动到交换空间之前使用了太多内存(我有大约 750MB)。这个问题甚至应该发生吗?是获得更多内存的唯一解决方案吗?我听说过 Linux 中的可交换性设置可能会被弄乱,也许这会有所帮助。

有什么建议么?这个问题很烦人。

memory
  • 7 7 个回答
  • 767 Views

7 个回答

  • Voted
  1. Best Answer
    Lothar
    2009-09-08T14:11:43+08:002009-09-08T14:11:43+08:00

    不要浪费时间进行优化,只需添加 1 GB 内存。256 已经是运行 web 和 mysql 服务器的最低端了。

    我很确定您需要手动重置,因为系统正在大量使用您的交换空间。请记住,交换是为了将空闲的长时间运行的进程移到磁盘空间。当您很快再次需要内存时,这被称为“交换垃圾”,这是非常糟糕的。网络服务器永远不应该使用交换。由于其内部缓冲区处理,数据库可能会更好地进行交换。

    所以是的,除了增加大约 20 美元来获得更多内存(或花大量时间优化程序)之外,别无他法。

    • 3
  2. Ryaner
    2009-09-08T13:01:00+08:002009-09-08T13:01:00+08:00

    运行 free -m Linux 将使用所有可用的内存和缓存的东西。免费会告诉你是否有问题。

    例子

    free -m
             total       used       free     shared    buffers     cached
    Mem:          6035       5954         80          0         69       4401
    -/+ buffers/cache:       1483       4552
    Swap:         4722          0       4722
    

    只有 80meg 免费,但其中大部分用于缓存设置,用于从磁盘缓存文件访问。如果您的交换线使用了内存,那么是的,您将需要更多内存。

    • 2
  3. cas
    2009-09-08T14:20:04+08:002009-09-08T14:20:04+08:00

    是的,您需要更多内存来应对这种情况。

    您还可以创建一个交换文件来帮助机器跛行,直到您安装更多内存。这不是治愈方法,从交换运行速度很慢- 但它应该阻止机器因内存不足而崩溃,这更糟。

    例如制作和使用一个 2GB (2M * 1K) 的交换文件:

    dd if=/dev/zero of=/swapfile bs=1K count=2M
    mkswap /交换文件
    交换/交换文件
    

    如果您希望交换文件在重新启动后仍然存在,还可以将交换文件添加到 /etc/fstab。

    当您不再需要它时,请记住交换交换文件并删除它,以恢复使用的磁盘空间。

    • 2
  4. hdanniel
    2009-09-08T15:20:47+08:002009-09-08T15:20:47+08:00

    简短的回答是:是的,您需要更多 RAM。

    我认为您的 MaxClients 指令具有很高的价值,而您的服务器无法处理。查看Apache Documentation 中的此文档,如果您有 256MB、1GB 或 4GB 的 RAM,这将很有用。

    • 1
  5. Chris Nava
    2009-09-08T15:42:09+08:002009-09-08T15:42:09+08:00

    如果您受到 digg/redit 热潮的冲击,一个选择是爬取您的站点 2 级深度并创建前几页的纯 HTML 副本。这将允许它为大多数访问该站点的用户提供 HTML 而不会触及数据库。

    • 1
  6. Ronald Pottol
    2009-09-08T14:01:40+08:002009-09-08T14:01:40+08:00

    一种选择可能是安装缓存代理,是的,它将使用资源,但会减少您的数据库等的负载(当然取决于您的站点)。

    • 0
  7. sybreon
    2009-09-08T16:54:03+08:002009-09-08T16:54:03+08:00

    您可能会考虑的另一个解决方案是使用Coral Distribution Network服务。您可以选择在“峰值负载”期间使用它,或者让您的家庭服务器一直这样做。您可以在线查看一些示例 mod-rewrite 规则以分配您的流量。

    • 0

相关问题

  • 不会将整个 XML 文件读入内存的命令行 XML 验证器?

  • 在 Windows Server 2008 中,为什么我的 BIOS 和计算机属性显示我安装的所有 RAM,但任务管理器没有?

  • 如何使用 vmstat 获取 % 内存使用率?

  • 规格相同但引脚不匹配的 DDR2 模块?

  • ECC RAM、后台清理和 IOMMU BIOS 设置

Sidebar

Stats

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

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

    从 IP 地址解析主机名

    • 8 个回答
  • Marko Smith

    如何按大小对 du -h 输出进行排序

    • 30 个回答
  • Marko Smith

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

    • 9 个回答
  • Marko Smith

    Windows 中执行反向 DNS 查找的命令行实用程序是什么?

    • 14 个回答
  • Marko Smith

    如何检查 Windows 机器上的端口是否被阻塞?

    • 4 个回答
  • Marko Smith

    我应该打开哪个端口以允许远程桌面?

    • 9 个回答
  • Marko Smith

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

    • 3 个回答
  • Marko Smith

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

    • 15 个回答
  • Martin Hope
    MikeN 在 Nginx 中,如何在维护子域的同时将所有 http 请求重写为 https? 2009-09-22 06:04:43 +0800 CST
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    0x89 bash中的双方括号和单方括号有什么区别? 2009-08-10 13:11:51 +0800 CST
  • Martin Hope
    kch 如何更改我的私钥密码? 2009-08-06 21:37:57 +0800 CST
  • Martin Hope
    Kyle Brandt IPv4 子网如何工作? 2009-08-05 06:05:31 +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