我正在尝试优化我的新网站性能,我的配置是运行在 ubuntu 11.04 1G VPS 上的 wordpress,带有 nginx/php-fpm/mysql。我使用页面缓存、浏览器缓存来加快速度。但我需要了解一些事情:当我使用不同的在线工具或 firebug 运行速度测试时,第一个 GET 请求存在瓶颈,需要等待 3 或 4 秒才能从服务器获取第一个字节。此后,网站加载速度可以接受。换一种解释,例如,如果您从 Firefox 打开网站,您将看到状态栏停留在“等待 mydomain.com..”上 3 或 4 秒。我想了解控制此等待时间的因素是什么,以及优化建议。
答案1
等待服务器第一个字节的延迟可能是由多种不同原因造成的,其中包括:
- DNS 查找延迟
- 服务器启动 TCP 会话的延迟
- 服务器向服务器发送请求延迟
- 服务器收到请求后发回数据的延迟。
Chrome 的开发工具通常会告诉您其中哪个是真正的瓶颈,其中只有一部分必然是由服务器设置引起的。我会找出其中哪个导致了延迟,然后努力解决它。
假设您没有 DNS、延迟或带宽问题,听起来服务器可能需要很长时间才能生成页面输出,要么是因为它工作过度,要么是因为应用程序正在做很多事情并需要时间来呈现页面。众所周知,Wordpress 与数据库的沟通相当频繁(我之前见过 wordpress 主页进行 500 多个数据库查询),所以我希望获得众多 php-profiling 插件之一,并调查应用程序是否在可接受的时间内生成页面。如果应用程序性能良好,而服务器仍然无法及时提供查询,那么这更多地指向了 Web 服务器配置或服务器负载问题。
答案2
您是否使用了 nginx 的代理功能?nginx 可以缓冲来自真实服务器的响应,然后将其中继到客户端,因此,如果启用了该功能,您可能会看到缓冲造成的延迟。