RKI*_*RKI 1 networking linux performance nginx
我有多个站点的 nginx+apache 网络服务器。
但是第一个字节的时间(TTFB)很长:每个请求0.5-2秒(静态和动态内容)。
如何优化首字节时间 (TTFB)?
通常,到第一个字节的时间取决于:
DNS 查找: 定义:查找域的 IP 地址改进:更多/分布式/响应式 DNS 服务器
连接时间: 定义:打开一个到服务器的套接字,协商连接改进:典型值应该在“ping”时间附近 - 通常需要往返
等待: 定义:在发送第一个字节之前需要进行初始处理 改进:这是您应该改进的地方 - 这对动态内容最重要。
一个额外的考虑来自:
处理(在第一个字节之后): 定义: 等待的总和 + 内容的完整传输 改进: 如果传输时间明显长于预期下载接收到的数据量,则正在进行进一步处理,并且可以优化(例如该页面正在刷新可用内容)
鉴于我不知道您是如何进行测试的(或者关于您的设置或您提供的内容的很多信息),以下是相当普遍的建议:
首先,尝试在远程(客户端)机器上使用 Firebug,在您的服务器上使用诸如 ab (ApacheBench) 之类的东西。这将有助于将 TTFB 编号分解为其组件值,以便您可以专注于一次修复它们 - 或缩小问题范围。从不同位置运行测试还有助于指出连接时间和 DNS 查找方面的问题,如果直接从您的服务器运行这些问题可能不会发生。此外,您将需要从远程机器运行 ping 到您的服务器以确定有多少时间仅归因于“往返时间”。
其次,尽量避免使用nginx作为反向代理。如果每个请求在到达 Apache 之前都必须通过 nginx,预计它会比 Apache 慢。尝试直接从 nginx 提供静态文件(即完全绕过 Apache),并缓存从 Apache 接收到的一些内容(即 proxy_cache)。Nginx 应该能够非常快速地提供静态文件,特别是如果测试是从本地机器运行的。如果这不是真的,那么您需要查看您的配置以及您的服务器正在使用的资源。
第三,尝试确定您的性能受到影响的地方 - 是 Apache 还是 nginx?比较通过 nginx 请求的 ab 结果与直接到 apache 的请求(只需更改端口,并指定主机头)以确定反向代理是否是一个重大瓶颈)。
您已经提到该问题同样适用于静态和动态内容 - 但下一步是分析您的脚本,并查看慢查询日志以确定是否存在任何重大瓶颈。
归档时间: |
|
查看次数: |
13939 次 |
最近记录: |