BuildBuddy故障排除手册:常见问题与解决方案大全
BuildBuddy故障排除手册常见问题与解决方案大全【免费下载链接】buildbuddyBuildBuddy is an open source Bazel build event viewer, result store, remote cache, and remote build execution platform.项目地址: https://gitcode.com/gh_mirrors/bu/buildbuddyBuildBuddy是一个开源的Bazel构建事件查看器、结果存储、远程缓存和远程构建执行平台在使用过程中可能会遇到各种问题。本手册汇总了BuildBuddy的常见故障及解决方案帮助用户快速定位并解决问题确保构建过程顺畅高效。远程执行RBE故障排除远程连接/协议失败执行失败此错误通常表示缓存写入超时。默认情况下Bazel的remote_timeout标志将所有远程执行调用限制为60秒。解决方案建议使用以下标志增加远程超时时间--remote_timeout10m这些耗时的写入仅在工件最初写入缓存时发生一次后续构建不应再出现。远程连接/协议失败执行失败 DEADLINE_EXCEEDED这一错误同样是缓存写入超时的信号。Bazel默认的remote_timeout限制了远程执行调用时间。解决方案通过以下命令延长超时时间--remote_timeout10mexec user process caused exec format error当构建配置为darwinMac OSXCPU但尝试在Linux执行器上运行时会出现此错误。BuildBuddy Cloud的免费层不包含Mac执行器。解决方案如果需要在BuildBuddy Cloud账户中添加Mac执行器请联系销售团队。rpc error: code Unavailable desc No registered executors.此错误与上述exec format error原因相同即构建配置为darwin CPU却在Linux执行器上运行。解决方案如需Mac执行器请联系销售团队获取相关服务。WARNING: Remote Cache: UNAVAILABLE: io exception当Bazel无法与BuildBuddy维持长时间TCP连接时可能发生此错误。排查与解决步骤运行bazel --remote_grpc_loggrpc.log捕获gRPC流量使用BuildBuddy CLI的bb print --grpc_logpath-to-file/grpc.log将protobuf格式日志转换为JSON。若日志中出现Connection reset by peer等网络错误可能是中间代理或网关如AWS NAT Gateway过早终止空闲连接。尝试调整Linux网络设置sudo sysctl -w net.ipv4.tcp_keepalive_time180 sudo sysctl -w net.ipv4.tcp_keepalive_intvl60 sudo sysctl -w net.ipv4.tcp_keepalive_probes5这些设置会使Linux内核更早、更频繁地发送保活探针防止中间代理/网关断开空闲连接。CacheNotFoundException: Missing digest远程构建执行期间Bazel可能会遇到CacheNotFoundException错误提示“Missing digest”。解决方案复制缺失blob的哈希导航到调用URL - Cache - Cache requests将哈希粘贴到过滤器输入框查看Bazel是否尝试上传blob到BuildBuddy远程缓存。若上传失败可通过--remote_retries默认5次和--remote_retry_max_delay默认5秒配置重试次数和延迟。Bazel 8及以上版本可使用--experimental_collect_system_network_usage收集网络使用数据该数据会显示在调用页面的“Timing”选项卡中。若Bazel未尝试上传缺失的blob可使用以下标志--experimental_remote_cache_lease_extension --experimental_remote_cache_ttl --experimental_remote_cache_eviction_retries5若上述方法无效运行bazel clean --noasync手动清除本地状态关闭Bazel JVM后重新构建。排查时建议使用--disk_cache禁用本地磁盘缓存并避免使用任何远程缓存代理解决方案。图BuildBuddy缓存请求卡片界面可用于查看缓存请求状态和相关信息上传速度慢问题解决构建事件协议BEP上传超时此错误意味着bes_timeout标志设置的时间可能不足以让Bazel完成所有构建工件的上传。解决方案建议使用以下标志增加上传超时时间--bes_timeout600s这些缓慢的上传仅在工件最初写入缓存时发生一次后续构建不应再出现。等待构建事件上传如果构建已完成但经常需要等待构建事件上传可能是在网络受限环境中上传大型构建工件如docker镜像或大型二进制文件。解决方案对于网络受限环境建议使用以下标志运行--noremote_upload_local_results这将上传构建、测试和分析日志但不会上传可能需要更长时间上传的大型构建工件。BuildBuddy缓存工作原理理解BuildBuddy的缓存工作原理有助于更好地排查缓存相关问题。BuildBuddy的缓存读取和写入流程如下图BuildBuddy缓存读取流程示意图展示了Bazel与BuildBuddy App之间的交互及缓存读取过程图BuildBuddy缓存写入流程示意图展示了Bazel向BuildBuddy App写入缓存的过程及数据验证机制更多帮助资源如果在本手册中没有找到您遇到的问题解决方案可以通过以下方式获取帮助查阅官方文档docs/troubleshooting.md发送邮件至supportbuildbuddy.io加入BuildBuddy社区Slack频道通过以上方法您可以获取更多关于BuildBuddy故障排除的支持和帮助。【免费下载链接】buildbuddyBuildBuddy is an open source Bazel build event viewer, result store, remote cache, and remote build execution platform.项目地址: https://gitcode.com/gh_mirrors/bu/buildbuddy创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考