Squid Web Cache Wiki

Squid Web Cache 文档

🔗 特性:访问日志的 DNS 等待时间记录

🔗 概述

一个主事务是 Squid 处理单个传入 HTTP 请求所关联的所有活动。一个主事务可能包括与缓存对等节点、源服务器和 ICAP 服务器的通信。主事务的详细信息会被记录到 access.log。

本项目增加了一个新的访问日志格式代码,用于记录每个主事务的总 DNS 等待时间。此度量累加了与主事务直接相关的活动在等待 DNS 响应的期间。主事务可能不会被 DNS 查询阻塞,因为同一主事务中的其他活动可能不依赖于 DNS 查询。

新的访问日志格式代码名称是dt。该值以毫秒为单位的整数表示总 DNS 等待时间。如果主事务没有关联任何 DNS 查询,则记录一个破折号(‘­’)。记录的值可能不包含所有 DNS 查询,因为一些 DNS 操作发生在代码深处,难以可靠地将查询与主事务关联。

与任何与时间相关的日志字段一样,由于 Squid 内部时钟更新不频繁以及事件处理延迟,DNS 等待时间的精度最好也只有几毫秒。

🔗 实现思路

主事务统计信息累加在HttpRequest 或其成员中。我们可以创建一个MasterDnsStats类来维护主事务的 DNS 统计信息。克隆的请求应继承旧的MasterDnsStats成员值。

仅仅保留总时间累加器可能不够。为了处理单个主事务的并发 DNS 查询,并适应在记录时尚未结束的查询,MasterDnsStats可能还需要使用levelstart成员。level成员表示当前并发 DNS 查询的数量。start成员记录了并发 DNS 查询在零级开始的最后时间。新的 DNS 查询会增加级别。一个完成的查询会降低级别,如果是最后一个查询,则将current_time-start差值加到事务总数中。应添加封装查询开始/结束计数的函数。

如果在主事务记录时并发级别大于零,则记录值会增加current_time-start差值。

要从发起或完成 DNS 查询的主事务中定位可能很困难。解决这个难题可能有助于正确修复 Squid bug 2459

🔗 可用性

开发工作在 Squid3 的 trunk 上进行,目标是包含在官方 v3.2 中。该特性也已被非官方移植到 v3.1

类别:功能

导航:站点搜索站点页面类别🔼 向上