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

如何解决Docker部署的QuestDB出现的errno=24错误?

解决Docker部署QuestDB的文件打开数限制问题

查看Docker内QuestDB进程的当前文件限制

  • 进入QuestDB容器:
    docker exec -it <你的QuestDB容器名或ID> bash
    
  • 查找QuestDB主进程PID:
    ps aux | grep questdb
    
    输出中找到io.questdb.Main对应的进程ID(PID)
  • 查看该进程的文件限制:
    cat /proc/<PID>/limits
    
    重点关注Max open files行的软限制(Soft Limit)和硬限制(Hard Limit)

提升Docker内QuestDB的文件打开数限制

临时调整(容器重启后失效)

进入容器后,直接修改当前shell的文件限制,然后重启QuestDB进程:

ulimit -n 65536
# 重启QuestDB,容器会自动重启进程
kill <QuestDB的PID>

永久配置(容器启动时生效)

方式1:docker run命令指定

启动容器时添加--ulimit参数:

docker run -d --name questdb \
  -p 9000:9000 -p 8812:8812 -p 9009:9009 \
  --ulimit nofile=65536:65536 \
  questdb/questdb

方式2:Docker Compose配置

在docker-compose.yml的QuestDB服务中添加ulimits字段:

services:
  questdb:
    image: questdb/questdb
    ports:
      - "9000:9000"
      - "8812:8812"
      - "9009:9009"
    ulimits:
      nofile:
        soft: 65536
        hard: 65536

然后重新启动容器:

docker-compose up -d

方式3:全局Docker daemon配置(所有容器生效)

编辑Docker守护进程配置文件/etc/docker/daemon.json:

{
  "default-ulimits": {
    "nofile": {
      "Hard": 65536,
      "Soft": 65536
    }
  }
}

重启Docker daemon使配置生效:

systemctl restart docker

之后重启QuestDB容器即可应用新限制。

注意事项

容器的文件打开数硬限制不能超过宿主机的硬限制,所以需确保宿主机已配置足够的限制:

  • 编辑宿主机的/etc/security/limits.conf,添加:
    * soft nofile 65536
    * hard nofile 65536
    root soft nofile 65536
    root hard nofile 65536
    
  • 重启宿主机或重新登录后,宿主机的限制会生效。

内容的提问来源于stack exchange,提问作者Nick The Greek

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.03 22:57:10