我有关于在不同配置中运行PHP的基本想法,如mod_php,cgi,FastCGI等。
在我的发现和测试中,我发现FastCGI略胜一筹。我最喜欢FastCGI对SuEXEC的支持。等等我不想再次进入基准测试业务。如果你上网,你会发现在每秒处理的请求数量方面,证明一种方式比另一种更快的人。那么它的好指标,但我对不同的因素感兴趣,这是我的问题......
请注意,我对DIGG或交通高峰的生存兴趣不大。我想要一种可以使服务器稳定和可预测的方法。
对不起,如果我很困惑,但我真的很乱。我有512MB物理内存,400MB交换和我的服务器疯狂的内存不足。平均内存需求大约为350MB,只是内存使用量激增使内存几秒钟无法访问,如果在那几秒钟窗口中收到的额外命中数很少,则apache崩溃,而mysql和所有其他fellas一直运行正常。
请帮帮我们。我不会买更多的RAM或硬件。我很确定问题出在我的配置中。对不起,如果我听起来很傲慢或无知。
答案 0 :(得分:19)
运行PHP的哪种方法占用的内存较少?
我认为根据PHP处理的请求,它们或多或少相同。但是如果你将mod_php加载到apache服务图像中,那么我认为由于提供静态文件,你的内存占用率会更高。
另外哪种方法消耗内存几乎不变。我用mod_php看到我的服务器内存使用量每隔几秒就会在300MB到800MB之间波动。
你可以使两者保持不变。如果您仔细设置MaxClients,MinSpareServers和MaxSpareServers,您几乎可以知道正在运行的进程数。如果您还在PHP配置中设置memory_limit,则可以计算所需的内存量。 您也可以对fcgi执行相同的操作,因为您可以决定正在运行的进程数。
但是使用FastCGI,来自服务器的第一个响应很晚。我看到FastCGI每个网页请求有一个初始延迟。一旦服务器的第一个响应到达,其他项目如图像,css,js加载速度就会快得多。
这没有意义。我不确定为什么会发生这种情况。
两种混合运行都可以吗?我在专用服务器上有5个站点。如果我使用mod_php运行少量并使用FastCGI休息,这样可以吗?
我想,但这对维护来说都是一场噩梦,并且可能更难配置保存内存。恰恰相反,我相信。
我确信我的服务器出现故障主要是因为mod_php的内存使用不当。我检查了所有脚本。有没有办法确保服务器上的内存消耗几乎保持不变?
如上所述配置内存和进程,并继续监控。
.htaccess的复杂性是否会显着影响内存使用?如果是,是否可以使服务器内存不足?
我不这么认为。每个目录.htaccess可以降低速度,但除非Apache中存在严重错误,否则不应导致大量内存消耗。
apache MPM prefork / worker设置会影响内存消耗吗?它们是否同样影响mod_php和FastCGI模式?
可能,但我建议远离工作人员,因为PHP主要不是线程安全的。
当我运行“top”命令时,我看到apache(httpd)消耗大约40MB的内存。有许多httpd运行的实例。此外,FastCGI还会分配一些类似大小的进程。 httpd进程的正常内存大小是多少?
30MB是分钟。上限取决于您的应用程序(我见过大约1GB的情况)
当我在所有网站上运行Wordpress时,在这种情况下这将是一个好方法吗?
这可能是品味问题。我最近从apache转向nginx + fastcgi。它需要一些时间来习惯,但它确实运作良好。使用wordpress没有任何问题(甚至没有超级缓存,这与网络服务器相关)。
FastCGI / SuExec能否正常使用APC?我是否需要重新配置APC以使用SuEXEC和FastCGI。
我没有使用suExec,但fastcgi适用于APC。无需配置任何内容。
答案 1 :(得分:3)
尝试切换到 mod_php ,很多人声称它的速度。在提供静态文件时没有意识到 mod_php 通过额外的内存消耗。 (我不太关心root拥有文件的安全问题)。< / em>的
如果没有CDN设置, fastcgi 是您提供PHP应用程序的首选。没有它,从 fcgi 切换到 mod_php 会减慢我的页面生成时间,从3895ms减少到6264ms(共享主机上的管理页面)。 < / p>