我已经安装了Apache 2.2,它像一个魅力运行。 问题在于,系统有时在高负载下变慢,或者大量的同时用户访问相同的php文件。
查看Splunk中的服务器性能日志我注意到Apache非常高效地使用了CPU,并且每次发生峰值时都会创build独立的脚本,并以非常勇敢的方式处理CPU消耗。
尽pipe如此,这个特定的服务器比CPU的能力有更多的可用内存,我想知道,如果有办法,使Apache在处理不同的任务时更依赖RAM而不是CPU。 目前看起来似乎是在特定设置中提高Apache性能的最佳select。
我们的服务器有4CPU内核(2.2 GHz),8GB或RAM。
当发生负载时,我们通常只能看到700MB的RAM,但是Apache所消耗的CPU的80-90%。 是否合乎逻辑地假设,通过增加Apache处理的内存的“限制”,我们可以推动用户限制?
改变Apache以这种方式工作的步骤是什么?
你有一个PHP操作码caching安装? 例如php-apc或xcache?
通常的build议:
看看使用apaches mod_expires和deflate。
每次发生[cpu]峰值时创build单独的阶梯
这是线程服务器,而不是前叉吗?
你认为峰值可能是产生更多进程的结果吗? 如果是这样,那么我build议运行更多的进程(但相同数量的threadsperchild)。 还要确保你已经得到了maxrequestsperchild的高价值(而不是0)。
当然,你想确保你有更多的闲置httpds运行。 你怎么去取决于它是prefork还是线程化的apache。
如果您提供了当前的核心设置,以及如何configurationPHP以及运行哪个操作系统的详细信息,这将会很有帮助。
正如其他人所说,启用压缩。 mod_deflate只能用于静态内容 – 对于PHP,您需要在您的ini文件中添加zlib.output_compression = On。 虽然一个简单的分析表明它增加了CPU的工作量,但实际上这意味着服务器被释放(而且不太频繁)。
首选的PHP应该运行为mod_php,如果失败,通过fastCGI – 如果它作为CGI运行,那么你期望什么? 同样,操作码caching将有所帮助。