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

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正常

解决思路

  1. 升级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
  1. 添加页面导航等待逻辑
    第二次goto时可能页面资源未完全释放,添加等待确保状态稳定:
await page.goto(url);
await page.waitForLoadState('networkidle'); // 等待网络空闲状态
  1. 固定Chromium版本
    Docker中安装的Chromium可能自动更新到与xk6-browser v1.4.2不兼容的版本,指定固定版本安装:
RUN apt-get install -y chromium=114.0.5735.198-1~deb11u1
  1. 强制重新构建镜像
    清理Docker缓存,避免旧依赖残留:
docker build --no-cache -t your-k6-image .

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.27 19:33:17