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数量,示例命令(替换为你之前使用的官方启动参数):
数值可根据你的机器配置调整(比如1或2)docker run --name Node_Z --cpus=2 --network scylla-net \ -e SCYLLA_SEEDS="$(docker inspect --format='{{ .NetworkSettings.IPAddress }}' Node_X)" \ scylladb/scylla - 启动后执行
docker exec -it Node_Z nodetool status验证是否正常。
解决方案2:修改Docker虚拟机的AIO参数(彻底解决)
由于容器运行在Docker的Linux虚拟机中,需调整虚拟机的fs.aio-max-nr参数:
- 编辑或创建
~/.docker/daemon.json文件,添加以下内容:{ "sysctls": { "fs.aio-max-nr": "1048576" } } - 重启Docker Desktop,让配置生效。
- 启动Node_Z后,进入容器验证参数是否生效:
返回值应为docker exec -it Node_Z cat /proc/sys/fs/aio-max-nr1048576,此时ScyllaDB可正常启动。
注意事项
- 不要尝试在Mac宿主机修改
kern.aiomax,该参数是BSD的异步IO限制,与Linux的AIO机制不兼容,对Docker容器内的ScyllaDB无效。 - 若修改
daemon.json后Docker无法启动,检查文件JSON语法是否严谨(比如逗号不能多写或漏写)。
内容的提问来源于stack exchange,提问作者Syed Shaheer Ali Zaidi
相关产品推荐
相关产品推荐

