GitLab docker 无法分叉 "Resource temporarily unavailable"

GitLab docker cannot fork "Resource temporarily unavailable"

我试图 运行 gitlab-ce docker ubuntu 服务器上的容器 version 22.04.

docker logs --follow gitlab的日志输出结果为

execute[/opt/gitlab/bin/gitlab-ctl start alertmanager] action run
    [execute] /opt/gitlab/bin/gitlab-ctl: fork: retry: Resource temporarily unavailable

即使通过 htop 监控我有足够的可用内存。 Docker 退出,错误代码为 137。我的 docker-compose.yml 文件看起来像

version: "3.7"
    gitlab:
        image: gitlab/gitlab-ce:latest
        container_name: gitlab
        restart: "no"
        ports:
            - "8929:8929"
            - "2289:22"
        hostname: "gitlab.example.com"
        environment:
            GITLAB_OMNIBUS_CONFIG: |
                external_url "https://gitlab.example.com"
                nginx['listen_port'] = 8929
                nginx['listen_https'] = false
                gitlab_rails['gitlab_shell_ssh_port'] = 2289
        volumes:
            - ./volumes/gitlab/config:/etc/gitlab
            - ./volumes/gitlab/logs:/var/log/gitlab
            - ./volumes/gitlab/data:/var/opt/gitlab
        shm_size: "256m"

我正在使用 docker 版本 20.10.16。其他图像在 docker 上工作正常。 ulimit -a 的输出是

core file size          (blocks, -c) 0
data seg size           (kbytes, -d) unlimited
scheduling priority             (-e) 0
file size               (blocks, -f) unlimited
pending signals                 (-i) 1029348
max locked memory       (kbytes, -l) 65536
max memory size         (kbytes, -m) unlimited
open files                      (-n) 1024
pipe size            (512 bytes, -p) 8
POSIX message queues     (bytes, -q) 819200
real-time priority              (-r) 0
stack size              (kbytes, -s) 8192
cpu time               (seconds, -t) unlimited
max user processes              (-u) 62987
virtual memory          (kbytes, -v) unlimited
file locks                      (-x) unlimited

我在虚拟服务器上遇到了同样的问题,它看起来很像你的机器。

我猜问题出在可以同时 运行 的进程的限制上。可能你被 400 限制了,但你需要更多来 运行 你的 compose 网络。

cat /proc/user_beancounters | grep numproc

响应格式如下:held, maxheld, barrier, limit

如果你运行这个命令,你应该能够看到你非常接近超过限制(如果我的假设是正确的)。

检查这个 link,他们谈论 Java,但一般问题是相同的: https://debianforum.de/forum/viewtopic.php?t=180774