我有几个网站的nginx+apache网络服务器。
但是对于第一个字节(TTFB)来说,有很长的时间:对于每个请求(对于静态和动态内容),0,5-2秒。
如何优化时间到第一字节(TTFB)?
发布于 2011-10-30 19:54:38
一般来说,第一个字节的时间取决于:
DNS查找:定义:查找域改进的IP地址:更多/分布式/响应的DNS服务器
连接时间:定义:打开服务器的套接字,协商连接的改进:典型的值应该围绕'ping‘时间--往返通常是必要的。
等待:定义:在发送第一个字节之前所需的初始处理改进:这是您应该改进的地方--对于动态内容来说,这将是最重要的。
另一项考虑来自:
处理(在第一个字节之后):定义:等待+内容完整传输的总和得到改善:如果传输时间明显长于下载所接收数据量的预期时间,则正在进行进一步处理,并可进行优化(例如,该页面正在按可用内容刷新内容)。
考虑到我不知道您是如何执行测试的(或者您的设置或您正在提供的内容),以下是一些相当一般的建议:
首先,尝试在远程(客户端)机器上使用Firebug,在服务器上使用ab (ApacheBench)之类的东西。这将有助于将TTFB编号分解为其组件值,以便您可以专注于一次修复它们--或者缩小问题范围。从不同位置运行测试还有助于指出连接时间和DNS查找中的问题,如果直接从服务器运行这些问题可能不会发生。此外,您还需要从远程机器到服务器运行ping,以确定有多少时间被简单地归因于“往返时间”。
其次,尽量避免使用nginx作为反向代理。如果每个请求在到达Apache之前都必须通过nginx,那么它将比Apache慢。尝试直接从nginx (即完全绕过Apache )提供静态文件,并缓存从Apache接收到的一些内容(即proxy_cache)。Nginx应该能够极快地提供静态文件,特别是如果测试是从本地机器运行的。如果这不是真的,那么您需要查看您的配置和服务器所使用的资源。
第三,尝试确定您的性能受影响的地方-是Apache还是nginx?比较通过nginx请求和直接向apache请求的ab结果(只需更改端口,并指定主机头),以确定反向代理是否是一个重要的瓶颈。
您已经提到,这个问题同样适用于静态和动态内容--但是下一步将是分析您的脚本,并查看缓慢的查询日志以确定是否存在任何重要的瓶颈。
发布于 2011-10-30 19:55:46
一些想法:
如果你想要一个更详细的答案,你必须告诉我们更多的情况。
https://serverfault.com/questions/326164
复制相似问题