Apache为小型网站使用了大量的CPU

我有一台配备512MB RAM的CentOS 5.5 VPS服务器。

有一个网站通过Apache / PHP / MySQL托pipe在它内置的Magento,一个stream行的电子商务框架。

当我浏览网站时,大概需要10秒左右的时间才能加载并运行top显示以下内容:

我明白,Magento是一个相对沉重的软件,它做了很多处理,但这是一个网站的荒谬。

它还没有启动,但我担心的是,当它和一些人在同一时间浏览主页,这可能会导致问题。

我不是一个服务器的人,所以不知道如何configuration。 512MB的RAM应该足够运行这个1网站。

我的Apacheconfiguration如下,任何build议将是伟大的!

 Timeout 120 KeepAlive Off StartServers 2 MinSpareServers 2 MaxSpareServers 7 ServerLimit 25 MaxClients 25 MaxRequestsPerChild 500 

这是相当明显的,你的第一个瓶颈在那里。 看看你的TOP输出,特别是8.7% – 你是I / O绑定。 所以你认为是CPU使用率,是你的硬盘快速提供数据的努力。

IO是共享资源的VPS是非常典型的,所以别人的活动会严重影响你的性能。

Magento不算大,速度慢,可以像任何其他networking应用程序一样执行 – 但是如果你的服务器速度很慢,那肯定不会有帮助。

通过这个http://s.onas.si/xg4h阅读一些关于configuration的提示

但其他答案是正确的,虽然你仍然可以有一个用户快速的页面加载时间,你几乎肯定不会比任何数字更高。

我写了一个相当不错的分解如何Magento将在VPS这里https://serverfault.com/a/367861/113375

Magento是一个资源猪。 如果你没有完全打开magento的caching,那么这个规格是5x的服务器会很慢。

所以确保你启用了所有的caching。

另外,magento即使在caching打开的时候也是一个记忆猪,所以你可能很幸运能够用512meg的ram获得5个并发连接。

我是一个从magento开始的公司的系统pipe理员,然后build立自己的解决scheme,因为build立我们自己的平台比较便宜,然后使用magento和折腾硬件来扩展。

根据你的Apache / PHP设置是如何设置的,它将是PHP代码,而不是Apache本身的CPU时间(如果你通过modPHP运行,那么PHP的CPU使用计算在Apache的,如果你是CGI / FastCGI PHP进程应该单独列在top产量)。

我对Magento一无所知(他们的支持路线将会是一个更好的地方来寻求特定于他们的脚本的帮助)是否有可能导致它尝试做太多的工作而导致错误configuration – 仔细检查文档以查看是否它有任何关于优化CPU使用的提示。

这可能是因为它正在运行一次一次又一次的任务,预先处理一堆东西,然后将其caching供以后使用,在这种情况下,问题可能不会在以后的请求中出现。

也可能是因为你的VPS是CPU过载的,所以如果花费一秒或者更less的时间访问一个CPu内核,可能会花10分钟,因为你的VPS正在与别人争夺CPU的使用。 我看到很多虚拟机都挤在一台双核心机器上,当大多数虚拟机相对CPU空闲时(这对于Web / SQL机器来说很常见,因为他们大部分时间都在等待networking或磁盘I / O而不是忙于CPU的工作,但远非如此)。

你有没有试过比较在你自己的机器上运行虚拟机的安装副本的性能? 如果它在那里performance的不错,那么表明你的VPS有一些不足之处,如果你的本地虚拟机的速度很慢,那么这个问题更像是在脚本或者它们的configuration上。 你也可以尝试运行一个简单的CPU基准testing,看看虚拟机是否“CPU慢” – 我build议单进程单线程testing,因为它看起来像保持Apache繁忙是一个进程/线程(整体vCPU使用一个10-20%,取决于你的计数,而这个Apache进程在~80%的时候被列出,它使用一个虚拟CPU,其余的则是或多或less的空闲)。

你的apacheconfiguration对这个站点处理的stream量有相当大的限制。

正如迈克所说,Magento非常大,速度很慢。

由于它是使用了CPU的httpd,我认为PHP运行的是mod_php。 确保为PHP运行提供足够的内存,并使用操作码caching。 还要确保你正在做所有常用的东西来调整你的应用程序。