You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何进一步提升Envoy Proxy的Bazel构建响应速度以迭代开发过滤器?

优化Envoy Bazel迭代构建速度的实用方案

针对过滤器迭代开发场景,在已使用remote_cache和dev(fastbuild)配置后仍存在的启动、依赖检查、链接耗时问题,可通过以下手段进一步优化:

  • 缩小构建范围,只编译目标代码
    不要全量执行dev目标,直接指定自己开发的过滤器相关具体Bazel目标,比如过滤器的测试二进制或集成目标:

    ./ci/run_envoy_docker.sh "BAZEL_BUILD_OPTIONS='--remote_cache=http://cachesrv:8000' ./ci/do_ci.sh build //source/extensions/filters/http/your_custom_filter:your_filter_bin"
    

    让Bazel仅处理与目标相关的代码,避免构建整个Envoy项目的冗余内容。

  • 启用文件系统监听,减少重复扫描
    添加--watchfs参数让Bazel监听文件系统变化,避免每次构建重新扫描所有文件的开销:

    ./ci/run_envoy_docker.sh "BAZEL_BUILD_OPTIONS='--remote_cache=http://cachesrv:8000 --watchfs' ./ci/do_ci.sh build //your/filter/target"
    
  • 跳过非必要前置流程,直接调用Bazel
    do_ci.sh会执行代码检查、依赖拉取等额外步骤,迭代开发时可直接进入Docker容器执行Bazel命令,省去冗余操作:

    1. 进入容器:
      ./ci/run_envoy_docker.sh bash
      
    2. 在容器内直接构建:
      bazel build --config=fastbuild --remote_cache=http://cachesrv:8000 //source/extensions/filters/http/your_custom_filter:your_filter_bin
      
  • 启用持久化构建Worker
    让Bazel保持后台编译/链接Worker进程,避免每次构建重启进程的开销:

    bazel build --config=fastbuild --remote_cache=http://cachesrv:8000 --strategy=CppCompile=persistent_worker --strategy=Link=persistent_worker //your/filter/target
    
  • 优化链接速度
    即使是fastbuild配置,链接大二进制仍可能耗时,可尝试:

    • 使用--linkopt=-fuse-ld=lld切换到LLD链接器(需确保容器内已安装),大幅提升链接速度
    • 拆分过滤器目标,避免直接链接整个Envoy主二进制,先编译过滤器的静态库或独立测试二进制,验证通过后再集成
  • 最小化依赖范围
    在过滤器的Bazel BUILD文件中,仅声明必要的依赖(如//envoy/http/filter:filter_interface等核心接口),避免引入不必要的大型依赖,减少依赖检查和编译的范围。


内容的提问来源于stack exchange,提问作者Armin Abfalterer

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.01 13:42:36