CentOS 6.4 X86_64使用过多的RAM和SWAP


CentOS 6.4 X86_64 Uses too much RAM and SWAP

我已经上网大约1周了,我发现的一切都是:"CentOS知道如何使用ram,别担心",但我真的认为这是个问题
我有一个最近/干净安装了CentOS 6.4 X86_64 final的虚拟机,具有1.5GB RAM、1个处理器/4核和700MB SWAP,问题是内存消耗
我安装了postgresql、pgadmin3、JRE 7.25(既不是JDK也不是OpenJDK)、netbeans 7.3.1和apache,但大多数时候(99%)我只需要同时打开NB和firefox,显然还需要httpd和pgsql服务
好吧,当我打开netbeans时,它使用300Mb-350MB,Firefox使用100MB-150MB,系统使用的初始内存约为250MB,因此有750MB,系统监视器和free-m命令确认了这一点,但几分钟内,系统就吃掉了我所有的可用内存,并开始使用100MB-200MB SWAP,它真的变成了SsLOOWWW。。我正在开发一个简单的PHP/JS/HTML网站

当系统吃掉我所有的内存并进行交换时,free-m命令返回如下:

    free -m
       total    used      free   shared    buffers    cached
Mem: 1511532  1477256    34276      0       18652     89325
-/+ b../c..:  1369279   142253
Swap: 711320   198652   512668

我知道实际可用内存大约是140MB,但是:

  • 这占用了大量内存,系统变得非常慢
  • 如果我关闭NB和FF,我只能获得两个释放的内存的一半(250MB)
  • SWAP从未发布(仅在重新启动时)
  • 如果我再次打开FF和NB,它会再次消耗250MB,甚至更多交换

我试过这个:

  • 我将Swappiness值从60更改为5,实际上系统直到它使用了95%的RAM,才使用交换
  • 我在启动时禁用了不必要的程序,如蓝牙管理器、邮件、登录声音、能量管理器(这是一台台式电脑)
  • 我将JVM最大堆大小设置为256MB,实际上在java/netbeans(虚拟+共享)之间=实际使用的内存永远不会超过400MB
  • 如果我逐个服务(包括多个httpd和PGSql子服务)进行检查,则使用的内存不超过750MB
  • 我不得不说,当我在Win7/WAMP中测试完全相同的网站时,Netbeans、PGAdmin3、Firefox和posgres服务使用的内存与centOS中使用的内存几乎相同(500MB),系统使用的初始内存(900MB),总使用内存为1400MB,它不会改变,因此这不是编程错误
  • 最后,我重新安装了CentOS,但问题仍然存在

如果您使用"htop"查看内存,您会发现内存条有三种颜色。我想,在你的情况下,使用的大部分记忆都是黄色的。

基本上,您的内存正被各种操作系统缓存使用。根据您的系统需要,这些缓存会被挤出内存。系统保留了ram副本,这样,如果在数据仍在内存缓存中的情况下再次执行相同的命令/程序,centos可以更快地执行。这就解释了为什么你只使用了一部分内存,一旦应用程序关闭就会释放。

这对我来说从来都不是放慢速度的原因

在你不断使用的过程中,我经历过firefox内存使用气球。

也许这是一个虚拟化平台的问题。您的主机操作系统是什么?您使用的虚拟化平台是什么?

正如我所说,我重新安装了CentOS x64,内存问题仍然存在,所以我有一个针对我自己的具体情况和我自己的经验的理论
如果您不完全确定您的程序/应用程序是为64位设计的,最好安装32位的CentOS,即使是AMD X64。
我的案例:

  • Amd Athlon X4 640处理器(64位)
  • VMware 7
  • 1个处理器/4核,1.5GB RAM
  • CentOS 6.4 32位
  • apache(httpd)
  • Php 5.3.3
  • Postgresql,(服务器、客户端、contrib、libpq)
  • pgAdmin III
  • Firefox 17 ESR(默认centos浏览器),带有firebug和colorzilla扩展
  • Opera(上次发布)
  • JRE 7.25(仅适用于netbeans--从Oracle而非openJDK下载)
  • Netbeans 7.3.1(PHP-HTML5)

现在我已经打开了pgadmin、netbeans(有10个活动选项卡)和firefox,可用内存是(150+MB可用+20+MB缓冲区+20+MB缓存),如果我在打开opera或任何其他程序时需要更多内存,则会释放一些缓存内存。哦,SWAP的使用是0.00000000,正如你所知,这可能真的很有帮助,但如果你使用的是在交换中加载的程序(全部或部分),它至少比在RAM中加载的软件慢10倍。