如果不看你的盒子来了解到底发生了什么,以下是一些潜在的缓慢途径:
潜在原因Apache通常以这样一种方式配置,即单个httpd进程始终在后台运行。当一个请求通过网络传入时,它会启动一个新的httpd进程来处理该请求。一旦请求关闭,新的httpd进程将停留一段时间,如果主进程在那里,主进程将向它传递额外的请求。
在一段时间的不活动之后,子进程将关闭,这意味着主进程必须重新分配内存,并在下一个请求到来时启动一个新进程。
我使用的术语如;“一段时间”;和;“特定时期”;因为这些都是服务器的可配置选项。您可以使用StartServers
指令。您还可以考虑查看MinSpareThreads
和MaxSpareThreads
指令,因为它们管理;处理请求峰值的空闲线程数"E;
有关这些指令的更多详细信息,请参阅in the manual.
PHP与Apache一样,PHP可以通过多种不同的方式进行配置,具体取决于您在服务器上的安装方式。Apache最流行的两种是CGI脚本和Apache模块。
作为一个CGI脚本,PHP将作为一个单独的进程运行。与Apache一样,通常会有一两个实例来处理请求,但在一段时间不活动后,它们会关闭以释放系统中的内存。
作为一个Apache模块,PHP被编译成Apache本身,因此每当您有一个httpd
您还设置了一个PHP处理程序。但正如我在上面的Apache系统中所描述的那样,这些额外的实例将消失,除非您将Apache配置为保持它们在周围并处于活动状态。
关于mod\\u php与php as CGI的更多信息here.
然而,MySQL是这里最大的障碍。与大多数其他数据库一样,MySQL将其数据存储在磁盘上,但将查询结果保存在内存缓存中,以加快查找速度。您可能看到的是MySQL在大约25秒后决定您已经离开,不再需要数据。
缓存基本查询对于流量大的站点非常有效,即使是那些服务器使用SSD进行数据持久化的站点,因为它将结果和数据保存在内存中,并且不必执行任何实际的查找来响应请求。不幸的是,您可能遇到了这样一个问题:缓存过时(或达到内部配置的超时阈值),后续请求需要从文件系统重新获取数据。
您可以在MySQL documentation.
缓解措施
服务器配置
如果您不是系统管理员,我建议您在几个小时内签订一份合同,以查看您的方框并调整设置。从书架上安装新的堆栈通常对每个人都很好(在普通的、未缓存的服务器上加载1s的页面也没什么好羞愧的)。然而,默认配置并不意味着是一刀切的方案。手头有一位专家来配置堆栈以充分利用硬件,这将是一笔划算的钱。
前端缓存
如果页面没有更改,可以使用前端缓存存储渲染的页面并快速为其提供服务。
Batcache, 例如,使用服务器上的Memcached将渲染页面存储在内存中这意味着后续请求会从Memcached中获取完全准备好的帖子,而不是等待WordPress从数据库中重新获取数据并为您重新构建内容。
WP Super Cache 将执行类似的操作,但会将呈现的页面存储为静态HTML文件,以便访问者获取该文件,而不是让WordPress解析任何内容。页面加载的瓶颈是SSD的速度+主机提供的带宽。