Apache +内存不足 – 像nginx这样的caching服务器可以提高性能吗?

我有一个lampp堆栈和基于PHP的软件的服务器。 这个服务器的内存非常低,不幸的是我现在不能改变或增加内存。 至less短期。

对内存的低内存影响非常明显。 服务器交换了很多。

由于一些依赖关系,从apache到另一个http服务器的转换不是短期的select。

在相同的服务器上,nginx可以用作caching的反向代理,是提高性能的替代方法吗?

我之前在其他设置中使用过nginx,成功率很高。 在这种情况下,我非常有限。 这个解决scheme的好处在于它可以让apache免费提供静态内容,另一方面,nginx也会消耗内存并加起来已经很慢的系统。

这很大程度上取决于服务器的特定工作负载,以及它为什么要消耗尽可能多的RAM。

如果PHP脚本生成的东西本质上是静态的(并且已经设置了适当的caching控制头),那么caching代理实际上可以重用生成的内容,它可能工作(或不工作)。 如果不是的话,你会增加更多的内存压力。

一般来说,如果你的资源严重受限,切换网页服务器并不是一个可以解决这个问题的灵丹妙药。 低RAM的解决scheme是添加更多的RAM …

无论如何,caching会使用内存(甚至Apache可以做到这一点),那么有什么优势呢? 最多可以提高性能,您可以设置nginx来提供静态内容,而代理dynamic内容的Apache。 当然,如果:

  • 你的网站上有足够多的静态内容可以certificate这一点。
  • 内存使用量是由于Apache线程(并发用户)的数量,而不是一些非常耗尽内存的脚本。

您可能还想尝试降低Apache中的线程和备用线程的最大数量,这可能会使您的网站反应慢一点,但是如果稍微调整一下,并且没有突然的使用率问题,则应该没问题。

您可以在工作模式(而不是prefork)下使用Apache,而不使用mod_php并在FPM池中使用PHP。

Apache将使用小线程而不是大进程(包含mod_php)来提供静态内容,而FPM池将只提供dynamic内容。

这个configuration也将允许你在不同的虚拟主机中使用不同的php版本和configuration。