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 / 问题 / 397018
Accepted
Stpn
Stpn
Asked: 2012-06-09 10:47:21 +0800 CST2012-06-09 10:47:21 +0800 CST 2012-06-09 10:47:21 +0800 CST

我使用了太多内存吗?(使用 Resque 在 EC2 上运行 Rails)

  • 772

我正在查看 Rails 应用程序的内存使用情况(它通过 Resque 使用后台进程)并且由于对“有多少工人太多”这个问题的常见答案是“测试和查看”,我运行了一些内存命令并想知道如果有人可以帮助确定内存使用率是否已经足够高,或者我仍然可以添加一些额外的工作人员..

所以(这都是在最大负载下):

$ free -t -m
                 total       used       free     shared    buffers     cached
    Mem:          1756       1532        223          0         12        229
    -/+ buffers/cache:       1291        464
    Swap:          895         10        885
    Total:        2652       1543       1108

$ vmstat
    procs -----------memory---------- ---swap-- -----io---- -system-- ----cpu----
     r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa
     0  0  10588 156172  13400 326476    1    6     4     0    5    4  1  0 99  0

如果我可以提供任何额外的信息来帮助回答这个问题,我会很乐意这样做。如果问题在某种程度上很奇怪,请告诉我我很乐意解决等问题。

ubuntu amazon-ec2 background-process redis memory-usage
  • 3 3 个回答
  • 918 Views

3 个回答

  • Voted
  1. Best Answer
    David Schwartz
    2012-06-09T13:01:40+08:002012-06-09T13:01:40+08:00

    显然,如果你正在积极交换,你有太多。交换使用并不意味着您正在积极交换。交换 I/O 意味着您正在主动交换。

    但是,主动交换并不是过度使用应用程序内存对您造成伤害的唯一方式。应用程序正在使用的每一字节内存都是不能用作磁盘缓存的内存字节。如果您的应用程序与磁盘的接触不多,这无关紧要。但如果这样做,即使没有交换,您也会因为缓存命中率低而遭受非常差的性能。

    首先要看的是有多少内存可用或用作缓存。如果那太低,那么你就有交换的风险。在本例中,大约为 400MB。所以你没有交换的风险。

    第二件要看的事情是磁盘缓存是否适合您的应用程序。一个棘手的问题是是否将空闲内存计为磁盘缓存的一部分。在您的情况下,内存流失可能需要可用内存。也就是说,它不能用作磁盘缓存,因为随着应用程序内存使用量的增加和减少,缓存会不断受到挤压。所以你的磁盘缓存大约是 200MB。

    这是否足够取决于您的应用程序如何使用磁盘。但如果不是这样,就会出现磁盘 I/O 过多和性能低下的问题。

    • 3
  2. Soham Chakraborty
    2012-06-10T05:38:22+08:002012-06-10T05:38:22+08:00

    您应该检查文件 /proc/meminfo。它包含您正在寻找的内容的详细答案。请记住,缓存和缓冲区本质上是空闲内存,缓存中的脏页除外。

    当从磁盘读取文件时,它被缓存到内存中。系统中存在同一个文件的两个副本,一个在缓存中,另一个在磁盘中。因此,当需要回收内存时,清理缓存比清​​理 slab 内存或交换更容易。

    在您的场景中,有一点交换。交换还不错,除非到了颠簸的地步。您似乎没有内存资源紧缩,如果您可以在系统使用率处于最高水平时捕获系统的 /proc/meminfo 输出和体系结构,那将会很好。

    • 2
  3. mdpc
    2012-06-09T10:51:47+08:002012-06-09T10:51:47+08:00

    根据您的指示,我看到了一些交换的证据,但在快照中不是很高。我可能会停在您当前使用的设置上,然后退后一点。您真正想要避免的一件事是交换,这基本上表明内存耗尽。

    • 1

相关问题

  • 无法通过 Ubuntu VPN 访问外部网络

  • ubuntu apt-get upgrade - 如何在 shell 中单击确定?

  • VirtualBox 上 Ubuntu 的访客优化技巧 [关闭]

  • 外部硬盘上的 virtualbox 虚拟硬盘驱动器(Vista 主机上的 ubuntu 客户机)

  • 如何在 Ubuntu 上挂载 LVM 分区?

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