调试远程缓存命中以在本地执行

报告问题 查看来源 每晚 · 7.4。 ,了解所有最新动态。 7.3 · 7.2 · 7.1 · 7.0 · 6.5

本页介绍了如何在本地环境中 执行。

本页面假定您的 build 和/或测试可以成功构建 并且设置为利用远程缓存,并且您需要确保 远程缓存是否得到了有效利用。

有关如何查看缓存命中率以及如何与执行 运行日志,请参阅 调试远程执行的远程缓存命中。 该指南中介绍的所有内容也适用于使用本地 执行。不过,本地执行会带来一些额外的挑战。

检查您的缓存命中率

成功的远程缓存命中将显示在状态行中,类似于 远程缓存命中率 执行

在 Bazel 运行的标准输出中,你会看到类似如下内容: 以下:

   INFO: 7 processes: 3 remote cache hit, 4 linux-sandbox.

这意味着,在 7 次尝试的操作中,有 3 次收到了远程缓存命中,有 4 次 操作无缓存命中,是使用 linux-sandbox 在本地执行 策略此摘要中不包含本地缓存命中。如果您得到的进程数为 0(或低于预期),请依次运行 bazel clean 和 build/test 命令。

缓存命中问题排查

如果您未获得预期的缓存命中率,请执行以下操作:

确保与远程端点成功通信

为了确保您的 build 成功与远程缓存通信,请遵循 执行本部分中的步骤

  1. 检查输出中是否有警告

    使用远程执行时,无法与远程端点通信 。另一方面,如果可缓存的本地 build 无法缓存,也不会失败。检查 Bazel 调用的输出,看是否存在警告,例如:

       WARNING: Error reading from the remote cache:
    

       WARNING: Error writing to the remote cache:
    

    出现此类警告后,系统会提供详细说明相关连接的错误消息 应该可以帮助您调试的问题:例如,输入错误的端点名称或 凭据设置不正确。查找并解决任何此类错误。如果错误 消息没有提供足够的信息,请尝试将 --verbose_failures

  2. 请按照对远程应用的缓存命中进行问题排查 执行到 确保您的缓存编写 Bazel 调用能够获取缓存命中 同一台机器和多台机器共用一个虚拟机。

  3. 确保缓存读取 Bazel 调用可以获取缓存命中。

    a. 由于缓存读取 Bazel 调用的命令行集 请格外小心,确保已正确设置 与远程缓存进行通信确保已设置 --remote_cache 标志 输出中没有任何警告

    b. 确保用于读取缓存的 Bazel 调用构建的目标与用于写入缓存的 Bazel 调用构建的目标相同。

    c. 请按照确保跨机器缓存中的步骤操作,确保从缓存写入 Bazel 调用到缓存读取 Bazel 调用进行缓存。