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

MacOS Ventura部署ScyllaDB第三个节点遇连接拒绝问题求助

解决MacOS上Docker运行ScyllaDB第三个节点的AIO资源不足问题

问题核心

你遇到的是MacOS环境下Docker运行ScyllaDB时的异步IO(AIO)资源配额不足问题:Mac基于BSD内核,没有Linux系统的/proc/sys/fs/aio-max-nr参数,直接修改宿主机的kern.aiomax无效——因为ScyllaDB容器实际运行在Docker的Linux虚拟机中,需针对虚拟机调整配置,或降低容器的CPU占用。

解决方案1:限制ScyllaDB容器的CPU核心数(快速生效)

ScyllaDB默认会占用所有可用CPU核心,每个核心会消耗一定的AIO请求配额,减少核心数能直接降低AIO需求:

  • 启动第三个节点Node_Z时,添加--cpus参数限制CPU数量,示例命令(替换为你之前使用的官方启动参数):
    docker run --name Node_Z --cpus=2 --network scylla-net \
      -e SCYLLA_SEEDS="$(docker inspect --format='{{ .NetworkSettings.IPAddress }}' Node_X)" \
      scylladb/scylla
    
    数值可根据你的机器配置调整(比如1或2)
  • 启动后执行docker exec -it Node_Z nodetool status验证是否正常。

解决方案2:修改Docker虚拟机的AIO参数(彻底解决)

由于容器运行在Docker的Linux虚拟机中,需调整虚拟机的fs.aio-max-nr参数:

  1. 编辑或创建~/.docker/daemon.json文件,添加以下内容:
    {
      "sysctls": {
        "fs.aio-max-nr": "1048576"
      }
    }
    
  2. 重启Docker Desktop,让配置生效。
  3. 启动Node_Z后,进入容器验证参数是否生效:
    docker exec -it Node_Z cat /proc/sys/fs/aio-max-nr
    
    返回值应为1048576,此时ScyllaDB可正常启动。

注意事项

  • 不要尝试在Mac宿主机修改kern.aiomax,该参数是BSD的异步IO限制,与Linux的AIO机制不兼容,对Docker容器内的ScyllaDB无效。
  • 若修改daemon.json后Docker无法启动,检查文件JSON语法是否严谨(比如逗号不能多写或漏写)。

内容的提问来源于stack exchange,提问作者Syed Shaheer Ali Zaidi

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.29 00:03:12