请看看我的服务器的RAM使用情况

我是服务器的noob。 我有一个centos5.5 vps与512MB RAM。 我的目标是让它只有一个magento商店。 我已经在服务器上安装了Magento,没有任何控制面板,只需要自己安装灯泡,无论使用什么PHP扩展来安装Magento。

只要我访问我的magento商店,突然vps上的公羊几乎被完全使用,只剩下大约100MB。 请参阅刚刚访问本网站后拍摄的htop截图。

http://img714.imageshack.us/img714/1944/screenouv.png

正如你所看到的,只剩下100MB左右。 这是正常的吗? 我想知道如果我可能做了一些愚蠢的服务器,使得它非常资源饥饿。 我从centos基地repo安装了apache,从ius版本库安装了php版本5.3,从ius repo版本安装了mysql 5.1。 我没有改变任何这些的默认configuration文件,除了在php.ini中memory_minimum 256。 有什么我可以做更多的公羊免费?

我很无能,但是我看到每个Apache守护进程正在使用8%的可用内存,并且AFAIK每个访问者都需要一个Apache守护进程。 所以我只用一小撮的游客就冲出公羊。 谢谢你的build议。

我的猜测是你很好:内存被Linux内核的磁盘caching使用(更多细节见http://www.linuxatemyram.com/ )。

关于Apache:如果您使用非线程版本的Apache(每个用户都是默认的),每个用户都需要Apache的一个实例,但是他只用了很短的时间,而只有一个页面传输给用户。 在此之后,apache进程将处理下一个请求,可能由不同的用户。 这样,你可以处理很多连接,只有相对较less的apache进程。

编辑:自由输出的例子:

  total used free shared buffers cached Mem: 498 434 64 0 194 77 -/+ buffers/cache: 162 336 Swap: 4102 0 4102 

被列为免费的64MB是不以任何方式使用的内存量。 但是,如果需要的话,几乎所有的caching/caching都可以被操作系统使用,所以潜在的可用内存实际上是350MB而不是64MB。

Centos将使用任何备用RAM作为磁盘caching和caching来加快速度。 当你访问文件时,他们将被caching在内存中。 caching仍然是空闲内存的一部分,如果系统在其他地方需要,将被放弃。 在这里看看更多的信息。

通过访问Magneto存储区,mysql从磁盘中检索数据,然后保存在caching(RAM)中以便快速检索。 这个是正常的。

512MB不是很多。 PHP与Apache prefork MPM相结合,意味着你将很快消费 。

实际上,您需要将总RAM(512MB)除以/etc/php.inimemory_limit ,以获得Apache MaxClients设置的合理数值。 Magneto wiki 说64MB是推荐的,但可能还不够 。 假设你用64MB,那给你8个客户端。 真的,less一点,因为你也在同一个系统上运行mysql和一些其他的东西。 你可以用比这更大的数字逃脱,但是在某个时候,你的系统将会死亡。

请记住,每个请求都需要由一个prefork服务器来回答,而不是每个访问者。 如果每个请求的服务速度足够快,则可能不需要您想象的那么多的服务器。

在这里举行一秒钟。 当前版本的系统需求文档说memory_limit应该至less为 256MB ,实际上它要求512MB。 这给了你2或1阿帕奇工人,这是不是真的成立。

所以。 你需要重新思考。 你可以在这个问题上抛出更多的内存(强烈推荐),或者使用不同的Apache MPM(可能对你的PHP应用程序有问题;我不知道),或者使用lighttpd + fastcgi 。

事实上,在任何情况下你都可能得到更多的内存 – 否则使用完全不同的应用程序。

(顺便说一下:关掉yum-updatesdyum-updatesd yum-cron ,你应该有自动更新,但是你不需要整天坐在RAM里的守护进程。)