Ubuntu部署gitlab频繁出现502的问题

Ubuntu部署gitlab频繁出现502的问题

问题描述

在ubuntu中基于docker部署了gitlab,但是发现网页频繁出现502错误,而且长时间卡死无法正常恢复,只能通过docker restart gitlab才能短暂恢复正常使用。

bash 复制代码
HTTP 502: Waiting for GitLab to boot

It can take up to a few minutes for GitLab to boot completely.

This page will automatically reload every 5 seconds.

创建docker容器时使用的命令:

bash 复制代码
sudo docker run -d \
--hostname localhost \
--shm-size 512m \
--memory 16g \
--memory-swap 24g \
-p 8090:80 -p 10022:22 -p 443:443 \
--name gitlab \
--restart unless-stopped \
-v /.../config:/etc/gitlab \
-v /.../log:/var/log/gitlab \
-v /.../data:/var/opt/gitlab \
gitlab/gitlab-ce:latest

分配的shm-size和memory都非常大,理论上根本不应该不够gitlab使用,而且实际使用频率也很低。

分析问题

运行命令:

bash 复制代码
docker inspect gitlab --format='{{.State.OOMKilled}}'

返回:

bash 复制代码
true

这意味着GitLab容器确实是因为触碰了16GB的内存上限,被 Docker 引擎无情地触发了 OOM (Out Of Memory) 机制并强制杀死了核心进程。这正是导致页面卡在 502 并且不断循环重启的直接原因。

但是为什么连16G内存都无法满足gitlab的需求呢?

定位原因

GitLab 的核心 Web 服务是 Puma。默认情况下,Puma 会根据宿主机的 CPU 核心数来自动生成对应数量的 Worker 进程。

每个 Puma Worker 大约会消耗 800MB 到 1GB 的内存。

如果物理机性能很好(比如是一台 16 核或 32 核的服务器),GitLab 就会启动 16 到 32 个 Worker。

单单是 Puma 这一项就会瞬间吃掉 16GB 以上的内存,再加上 PostgreSQL、Redis、Sidekiq 和监控组件,16GB 的 Docker 限制立刻就会被撑爆。

解决方法

在gitlab.rb文件中修改

限制 Puma Worker 数量

bash 复制代码
puma['worker_processes'] = 2

限制并发数:

bash 复制代码
puma['min_threads'] = 4
puma['max_threads'] = 4

刷新配置读取:

bash 复制代码
# 重启容器
docker restart gitlab

# 进入容器内部重新编译配置
docker exec -it gitlab gitlab-ctl reconfigure

# 重启所有 GitLab 服务
docker exec -it gitlab gitlab-ctl restart

修改完成之后,gitlab工作恢复正常,再也没有出现过一段时间后自己卡死无响应的问题。

相关推荐
曦夜日长8 小时前
Git系统篇,Git本地使用(一):从“究极进化版“到三个区域的底层原理
大数据·linux·git·elasticsearch
shimly1234569 小时前
给断网无 sudo ubuntu22.04 机器安装 nodejs
linux
别动我齐刘海10 小时前
Linux 系统调试学习1
linux·运维·服务器·c++·学习·机器学习·机器人
Lsetea10 小时前
OpenSSL报certificate chain too long:error 22与verify_depth深度排查
linux·https·ssl证书·openssl·证书链
不像程序员的程序媛11 小时前
linux常见文本操作命令
linux·运维·服务器
wangbing112512 小时前
开发指南149-IotDB-常用命令
linux·运维·iotdb
看着博客敲代码12 小时前
WorkBuddy 接上 Kali MCP 做自动化渗透:信息收集到初步验证的落地记录
linux·人工智能·安全·网络安全·自动化
小HANN13 小时前
华为云企业网站上云实战|从零搭建高可用WordPress全站架构(ECS+RDS+ELB+弹性伸缩+云监控闭环)
linux·运维·服务器·经验分享
星恒随风14 小时前
Linux库的底层原理:ELF文件格式、静态链接、程序加载、虚拟地址空间与GOT/PLT详解
linux·运维·笔记·学习·状态模式
GeW14 小时前
2026新质生产力路线图:Linux、数据库与智能算力融合报告
linux