Docker运行k6脚本触发空指针引用Panic问题求助
xk6-browser Docker环境下触发空指针Panic异常
异常日志
panic: runtime error: invalid memory address or nil pointer dereference [signal SIGSEGV: segmentation violation code=0x1 addr=0x38 pc=0xec5b8f] goroutine 46 [running]: github.com/grafana/xk6-browser/common.(*Frame).requestByID(0xc00219c540, {0xc00034b350, 0x6}) github.com/grafana/xk6-browser@v1.4.2/common/frame.go:435 +0x54f github.com/grafana/xk6-browser/common.(*FrameManager).requestFailed(0xc002da4000, 0xc002c0e3c0, 0x1) github.com/grafana/xk6-browser@v1.4.2/common/frame_manager.go:454 +0x4d7 github.com/grafana/xk6-browser/common.(*NetworkManager).onLoadingFailed(0xc0009b1100, 0xc000c76300) github.com/grafana/xk6-browser@v1.4.2/common/network_manager.go:375 +0x112 github.com/grafana/xk6-browser/common.(*NetworkManager).handleEvents(0xc0009b1100, 0xc003a42720) github.com/grafana/xk6-browser@v1.4.2/common/network_manager.go:347 +0x286 github.com/grafana/xk6-browser/common.(*NetworkManager).initEvents.func1() github.com/grafana/xk6-browser@v1.4.2/common/network_manager.go:330 +0x37 created by github.com/grafana/xk6-browser/common.(*NetworkManager).initEvents github.com/grafana/xk6-browser@v1.4.2/common/network_manager.go:329 +0x14d
使用的Dockerfile
FROM golang:1.20-bullseye as builder RUN go install -trimpath go.k6.io/xk6/cmd/xk6@latest RUN xk6 build --output "/tmp/k6" --with github.com/grafana/xk6-browser # Create grafana.ini file with the necessary configuration RUN echo "wal = true" > /tmp/grafana.ini FROM debian:bullseye RUN apt-get update && \ apt-get install -y chromium COPY --from=builder /tmp/k6 /usr/bin/k6 # Copy the grafana.ini file COPY --from=builder /tmp/grafana.ini /etc/grafana.ini ENV K6_BROWSER_HEADLESS=true #ENTRYPOINT ["k6"] WORKDIR /k6-performance-test COPY Browser_Test/chaostestingt.js . COPY users.json . COPY profiles.json . CMD ["k6", "run", "chaostestingt.js"]
关键场景信息
- 仅Docker环境触发异常,本地运行同一脚本无问题
- 期间未修改任何代码、配置
- 异常集中在第二次执行
await page.goto(url)时,首次加载该URL正常
解决思路
- 升级xk6-browser版本
当前使用的v1.4.2存在已知空指针bug,后续版本(如v1.4.3及以上)已修复类似Frame请求处理问题。修改Dockerfile构建命令,指定新版本:
xk6 build --output "/tmp/k6" --with github.com/grafana/xk6-browser@v1.4.3
- 添加页面导航等待逻辑
第二次goto时可能页面资源未完全释放,添加等待确保状态稳定:
await page.goto(url); await page.waitForLoadState('networkidle'); // 等待网络空闲状态
- 固定Chromium版本
Docker中安装的Chromium可能自动更新到与xk6-browser v1.4.2不兼容的版本,指定固定版本安装:
RUN apt-get install -y chromium=114.0.5735.198-1~deb11u1
- 强制重新构建镜像
清理Docker缓存,避免旧依赖残留:
docker build --no-cache -t your-k6-image .
内容的提问来源于stack exchange,提问作者user2862093
相关产品推荐
相关产品推荐

