我对运行PHP在不同的配置,如mod_php,cgi,FastCGI等有基本的想法。
在我的发现和测试中,我发现FastCGI稍好一些。我最喜欢FastCGI对SuEXEC的支持。等等,我不想在这里再次进入基准测试业务。如果你在网上冲浪,你会发现人们证明,就每秒处理的请求数量而言,一种方式比另一种方式更快。嗯,这是很好的指标,但我对不同的因素感兴趣,这里是我的问题……
请注意,我对在DIGG或流量高峰下生存不太感兴趣。我想要一种方法,可以使服务器稳定和可预测。
如果我弄糊涂了,很抱歉,但我真的很混乱。我有512MB的物理RAM,400MB的交换空间,而我的服务器内存快用完了。平均内存需求约为350MB,这只是内存使用峰值导致内存在几秒钟内不可用,如果在这几秒钟内收到的额外命中率很少,apache就会崩溃,而mysql和其他所有人都运行得很好。
伙计们,请帮帮我。我不会再买内存或硬件了。我非常确定这个问题出在我的配置中。如果我听起来傲慢或无知,我很抱歉。
发布于 2009-12-22 09:32:59
哪种运行PHP的方法消耗更少的内存?
我假设每个PHP处理的请求或多或少是相同的。但是如果你也将mod_php加载到apache服务镜像中,那么我假设你的内存占用量会更高,因为它服务于静态文件。
也会消耗几乎恒定的内存。我发现使用mod_php时,我的服务器内存使用量每隔几秒钟就在300MB和800MB之间波动。
你可以让这两者都保持恒定。如果仔细设置MaxClients、MinSpareServers和MaxSpareServers,就可以大致看出有多少进程正在运行。如果您还在PHP配置中设置了memory_limit,则可以计算需要多少内存。您也可以对fcgi执行相同的操作,因为您可以决定有多少进程正在运行。
但使用FastCGI时,服务器的第一个响应非常晚。我发现在FastCGI中,每个网页请求都会有一个初始延迟。一旦来自服务器的第一个响应到达,其他项目,如图片,css,js的加载速度就会更快。
这没有任何意义。我不确定为什么会发生在你身上。
可以同时运行这两种模式吗?我有5个网站上的专用服务器。如果我在mod_php上运行很少,在FastCGI上运行rest,可以吗?
我猜,但这将是一个噩梦维护和可能会更难配置以节省内存。我认为恰恰相反。
我敢肯定,我的服务器宕机的主要原因是mod_php对内存的使用不当。我检查了所有的脚本。有没有办法确保服务器上的内存消耗几乎保持恒定?
按照我上面概述的那样配置内存和进程,并保持监控。
.htaccess的复杂性是否会显著影响内存使用率?如果是,会不会是导致服务器内存不足的单一原因?
我不这样认为。每个目录的.htaccess可以减慢速度,但除非Apache中有一些严重的bug,否则它不会导致大量内存消耗。
apache MPM prefork/worker设置会影响内存消耗吗?它们对mod_php和FastCGI模式的影响是否相同?
有可能,但我建议远离worker,因为PHP大多不是线程安全的。
当我运行"top“命令时,我看到apache (httpd)消耗了大约40MB的内存。有许多httpd实例正在运行。此外,FastCGI还派生了一些类似大小的进程。httpd进程的正常内存大小是多少?
30MB是最小的。上限取决于您的应用程序(我见过大约1 1GB的情况)
当我在我们所有的网站上运行Wordpress时,哪种方式会更好呢?
?
这可能是品味的问题。我最近从apache转到了nginx+fastcgi。这需要一些时间来适应,但它确实工作得很好。wordpress没有任何问题(即使是supercache也没有问题,因为它涉及到web服务器)。
和APC能很好地工作吗?我需要重新配置APC来使用SuEXEC和FastCGI吗?
我没有使用suExec,但是fastcgi在APC上工作得很好。不需要配置任何东西。
发布于 2011-12-16 05:41:49
我试过切换到mod_php,很多人都说它的速度很快。我没有意识到mod_php在处理静态文件时会消耗额外的内存。(我并不太关心根拥有的文件的安全问题)。
在没有CDN设置的情况下,PHP fastcgi是您为应用程序提供服务的最佳选择。如果没有它,从fcgi切换到mod_php会使我的页面生成时间从3895ms降到6264ms (共享主机上的管理页面)。
https://stackoverflow.com/questions/1405656
复制相似问题