Squid Web Cache Wiki

Squid Web Cache 文档

🔗 功能:缓存目录故障绕过

🔗 详细信息

以下描述适用于所有支持的存储类型和 Squid 版本。当前的 补丁 仅实现了 Squid2 中 COSS 缓存目录故障的可选绕过。请参阅补丁前言了解技术说明,并在 bug 报告 中进行讨论。

向 cache_dir 添加 bypass=1 选项允许 Squid 绕过与该缓存存储相关的错误。被绕过的缓存目录不会存储未命中(misses),也不会加载命中(hits)。其状态可能已损坏,需要进行脏重建。但是,Squid 应该继续运行,使用剩余的缓存目录(如果有)。一旦触发,缓存目录绕过将持续到 Squid 停止。Squid 永远不会以绕过模式启动。

绕过代码将缓存交换状态(swap state)的失败视为缓存目录故障,即使交换状态文件位于缓存目录磁盘空间之外。

配置错误(例如,使用不支持的存储类型或为特定存储类型提供错误的 cache_dir 选项)仍然是致命的。

🔗 squid.conf 更改

🔗 诊断和监控

当绕过启动时,您将在 cache.log 中看到以下警告,以及可能相关的错误消息

2008/08/29 10:38:14| WARNING: Starting to bypass cache_dir #0
(/var/cache/dir1): stat() system call failed

您可以使用缓存管理器界面检查缓存目录的状态。例如,对于一个既可绕过又正在被绕过的给定缓存目录,mgr:storedir 菜单将显示以下标志(许多不相关的位已省略)

Store Directory #1 (coss): /var/cache/dir2
...
Flags: BYPASSABLE BYPASSED
...
Bypass stats:
    bypassing: yes
    ops bypassed: 0
    checks: 0 (limit 10)
    errors total: 0 (limit 10)
    errors in a row: 0

您可以使用相同的管理器界面来检查磁盘是否可绕过。

🔗 其他相关想法

由 Chris Woodfield 提出

以下各节记录了与缓存目录绕过远程相关的想法。如果您想致力于这些功能,请为您的工作启动一个新的功能页面。

🔗 更好地处理磁盘溢出

Squid 应该能够检测到磁盘已满的错误,并清除陈旧的缓存对象以释放空间。次要目标是,当 swap.state 日志变得过大或发生上述磁盘溢出时,能够缩小它。

🔗 缓存大小自动检测的奖励积分

我的意思是自动检测最有效所需的 L1/L2 层,无需显式配置。因此 squid.conf 只需包含

cache_dir ufs /squid/cache 20GB

分类: WantedFeature

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