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

M1(ARM64)机器Jenkins集成Selenium Grid节点启动失败问题

问题:Jenkins集成Selenium节点时出现SocketTimeoutException(M1 ARM64环境)

环境配置

在M1(ARM64)机器上通过以下docker-compose.yml部署1个Selenium Hub、2个Chromium节点及Jenkins服务,执行命令:docker-compose up --scale chrome=2

version: '3.7'

services:
  chrome:
    image: seleniarm/node-chromium
    volumes:
      - /dev/shm:/dev/shm
    environment:
      - SE_EVENT_BUS_HOST=seleniarm-hub
      - SE_EVENT_BUS_PUBLISH_PORT=4442
      - SE_EVENT_BUS_SUBSCRIBE_PORT=4443
      - SE_NODE_MAX_SESSIONS=2
      - SE_NODE_OVERRIDE_MAX_SESSIONS=true
      - SE_NODE_SESSION_TIMEOUT=300
    depends_on:
      - seleniarm-hub
    networks:
      - jenkins-network

  seleniarm-hub:
    image: seleniarm/hub
    container_name: seleniarm-hub
    ports:
      - "4442:4442"
      - "4443:4443"
      - "4444:4444"
    networks:
      - jenkins-network

  jenkins:
    image: jenkins/jenkins:lts
    restart: unless-stopped
    privileged: true
    user: root
    ports:
      - 8080:8080
    container_name: jenkins
    volumes:
      - ~/jenkins:/var/jenkins_home
      - /var/run/docker.sock:/var/run/docker.sock
      - /usr/local/bin/docker:/usr/local/bin/docker
    networks:
      - jenkins-network

networks:
  jenkins-network:
    driver: bridge

问题现象

  • 本地配置Selenium Hub远程URL后运行脚本正常,确认Hub与节点工作正常
  • Jenkins已安装Selenium插件且能连接Hub,但集成节点时触发错误,Jenkins启动日志如下:
jenkins          | 2023-03-06 05:35:54.088+0000 [id=23] INFO    jenkins.model.Jenkins#<init>: Selenium node launch failedAccept timed out
jenkins          | 2023-03-06 05:35:54.089+0000 [id=23] WARNING jenkins.model.Jenkins#<init>: Exception in onOnline() for the computer listener class hudson.plugins.selenium.ComputerListenerImpl on the built-in node
jenkins          | java.net.SocketTimeoutException: Accept timed out
jenkins          |  at java.base/java.net.PlainSocketImpl.socketAccept(Native Method)
jenkins          |  at java.base/java.net.AbstractPlainSocketImpl.accept(AbstractPlainSocketImpl.java:474)
jenkins          |  at java.base/java.net.ServerSocket.implAccept(ServerSocket.java:565)
jenkins          |  at java.base/java.net.ServerSocket.accept(ServerSocket.java:533)
jenkins          |  at hudson.plugins.selenium.process.SeleniumProcessUtils.createSeleniumRCVM(SeleniumProcessUtils.java:96)
jenkins          |  at hudson.plugins.selenium.callables.SeleniumCallable.invoke(SeleniumCallable.java:94)
jenkins          | Caused: java.io.IOException: Selenium node launch interrupted
jenkins          |  at hudson.plugins.selenium.callables.SeleniumCallable.invoke(SeleniumCallable.java:118)
jenkins          |  at hudson.plugins.selenium.callables.SeleniumCallable.invoke(SeleniumCallable.java:23)
jenkins          |  at hudson.FilePath.act(FilePath.java:1192)
jenkins          |  at hudson.FilePath.act(FilePath.java:1175)
jenkins          |  at hudson.plugins.selenium.process.SeleniumJarRunner.start(SeleniumJarRunner.java:42)
jenkins          |  at hudson.plugins.selenium.configuration.global.SeleniumGlobalConfiguration.start(SeleniumGlobalConfiguration.java:50)
jenkins          |  at hudson.plugins.selenium.PluginImpl.startSeleniumNode(PluginImpl.java:503)
jenkins          |  at hudson.plugins.selenium.ComputerListenerImpl.onOnline(ComputerListenerImpl.java:30)
jenkins          |  at jenkins.model.Jenkins.<init>(Jenkins.java:1025)
jenkins          |  at hudson.model.Hudson.<init>(Hudson.java:86)
jenkins          |  at hudson.model.Hudson.<init>(Hudson.java:82)
jenkins          |  at hudson.WebAppMain$3.run(WebAppMain.java:247)

已排查操作

  • 检查Selenium Hub及节点日志,未发现异常
  • 确认Selenium Grid与Jenkins使用的Java版本一致(openjdk 11.0.18 2023-01-17)
  • 添加自定义Docker网络确保Jenkins与节点通信,问题未解决

解决方案

核心原因

Jenkins Selenium插件默认会尝试在Jenkins内置节点上自动启动一个Selenium RC节点,但ARM64环境下插件自带的Selenium二进制文件存在兼容性问题,导致启动超时。我们已经通过Docker部署了独立的Selenium节点,无需插件自动启动。

操作步骤

  1. 登录Jenkins后台,进入Manage Jenkins -> Configure System
  2. 找到Selenium Grid Configuration配置区域
  3. 取消勾选Start Selenium node automatically选项
  4. 在Selenium Hub URL中填写Docker网络内的Hub地址:http://seleniarm-hub:4444/wd/hub
  5. 保存配置,重启Jenkins容器

完成后,Jenkins将直接使用已部署的Docker Selenium节点,不会再尝试自动启动内置节点,即可解决超时问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.29 03:54:59