Nginx FastCGI_缓存与PHP缓存

时间:2016-04-02 作者:Guerrilla

我一直在使用loader对缓存性能进行一些实验。io和留下了一些令人困惑的结果。

我原来在一个使用灯堆的共享主机上。即使启用了缓存,它也会在1分钟内超过200个访问者。

我在Digital Ocean上安装了一个基本的LEMP(Nginx 1.9.12+PHP-FPM7.0)1GB Ubuntu droplet,并复制了我的站点(subdomian multisite)。

为了获得一个基线,为了简单起见,我使用PHP缓存选项设置了Automatic wp super cache插件,并运行了一个测试。它运行得非常好,所以我在免费计划上尽了最大努力(1分钟10000次),下面是结果。

LEMP + wp-super-cache

与我的共享主机相比,这是一个令人惊讶的好东西,我的共享主机在一个请求中永远不会低于300ms,并且在任何类型的负载下都会超时。

我所读到的一切都表明,通过在wp super cache中使用PHP缓存,我的缓存性能会比使用Web服务器缓存差,因为通过PHP提供的静态页面会导致开销。

很高兴看到我能以多快的速度得到回复,我配置了fastcgi\\U缓存来缓存PHP文件,然后停用了wp超级缓存插件。

我再次运行了负载测试,结果如下:

enter image description here

结果基本相同。第一个请求花费的时间稍长,但我对缓存响应感兴趣,因为这很可能通过一些调整得到优化。

从这个结果来看,与让wp super cache使用PHP处理缓存相比,使用fastcgi\\U缓存没有任何优势。在处理用户生成的子域和映射域时,使用PHP缓存当然要简单得多。

我只是在freeplan上,所以我不能把负载测试推得更高,但我的需求在1分钟内不会超过10公里。

这让我感到困惑,因为我读到的每一篇文章都说,在Web服务器中使用缓存规则,而不是使用PHP提供静态文件,有着显著的性能优势,但这种设置似乎并非如此。

fastcgi\\U缓存直接从ram提供服务。Wp super cache使用php从SSD读取静态文件,所以我知道为什么它应该更快,为什么不是呢?

这当然不是一个实际的问题,我只是不明白为什么我的结果是这样的,似乎与我读过的所有指南都相矛盾。

有人能解释一下我为什么会得到这些结果吗?

1 个回复
最合适的回答,由SO网友:kovshenin 整理而成

Nginx非常擅长并发(PHP不太擅长),因此您应该尝试每秒超过180个请求。可能是500,也可能是1000,这取决于您的服务器资源和网络吞吐量。

fastcgi\\U缓存直接从ram提供服务。Wp super cache使用php从SSD读取静态文件,所以我知道为什么它应该更快,为什么不是呢?

视情况而定。首先,是否从内存提供fastcgi\\U缓存取决于您的fastcgi\\U cache\\u路径。如果设置为tmpfs装载,则是的,它将在内存中。如果将其设置为常规的非tmpfs目录,则将从磁盘提供服务。

但磁盘并不总是指实际的磁盘:)

当您从磁盘访问文件时,Linux会将其缓存在内存中,因此下次您访问同一文件时,它将从内存提供服务。这就是为什么大多数测试都使用loader。io、apache bench和其他“敲打”同一页面的工具都有缺陷。它们都会使堆栈访问和服务内存中可用的相同文件。这就是为什么您的WP-Super-Cache-PHP选项可能不会比Nginx产生更多的磁盘IO,因此在低并发性的情况下看起来速度也一样快。