我相信你已经注意到,对于许多服务器来说,如果你是几个小时内的第一个访问者,网站加载时间会相当长。你知道为什么会这样吗(只是服务器缓存吗?)以及如何让网站对第一个访问者来说也很快?在这种情况下,让我们采用正常的 LAMP 设置。谢谢你的帮助!
答案1
可能的原因有很多。几乎可以肯定不止一个原因。
有几种可能性:
- 网站在某些池机制下运行,例如 FastCGI、mod_php/mod_perl/mod_python 等。如果这些或 Apache 没有配置为保持最小服务器池,则当新请求到达并且没有可用的服务器可以加载该应用程序时,它们将不得不重新启动该应用程序。
- 应用程序使用数据库连接池。与上述问题相同,只是需要重新建立数据库连接。某些关系数据库打开新连接的速度可能非常慢(开销很大)
- 各种缓存机制(针对运行负载平衡器或 memcached 等缓存的高性能网站)可能需要在其信息过时时直接从网站刷新信息。这也可能适用于浏览器的本地缓存:虽然它通常可以忽略网站上的所有其他静态文件(如 css、js、图像),但一旦这些文件从缓存中过期,就需要重新获取它们。
- 网站可能会进行诸如备份之类的维护活动,这些活动发生在网站负载较低且无人访问时。
- 甚至可能像服务器操作系统磁盘缓存一样低级,其缓存中可能已填满同一台服务器上的其他网站,从而将一段时间未访问的网站的缓存版本推向外部(这正是磁盘缓存的职责所在,缓存经常使用的文件,而不是不经常使用的文件)。这应该导致的延迟很可能非常小,人类无法察觉。
缓解策略当然取决于实际原因。但通常应该做以下几件事:
- 确保 Apache 的 MinSpareServers/MinSpareThreads 和其他性能设置配置正确。尝试了解 Apache 如何、何时以及为何生成更多服务器/线程。
- 确保任何应用程序服务器(如 FastCGI)也经过正确配置,以保持有足够的可用池。
- 正确配置数据库连接池或保持持久数据库连接始终打开。
- 确保所有包含的文件(css、js等)都是可缓存的,并且具有合理的有效期。