排查 GitLab 间接性502问题

一、简介

版本 备注
18.0.0.0 15.0.0.0 - 18.0.0.0 均有这个问题,只是频率不一样

二、排查思路

  • 由于动不动502也不确定那个导致,日志又很多,所以采用脚本查看服务状态方式,看看那个服务被重启了

2.1、脚本

# 下面内容直接复制黏贴即可
cat > getGitlabStatus.sh << EOF
#!/bin/bash

# 确保输出文件存在
touch gitlab.log

while true; do
    # 获取当前时间
    current_time=$(date "+%Y-%m-%d %H:%M:%S")

    # 打印时间到终端
    echo "执行时间: $current_time"

    # 执行命令并打印结果到终端
    result=$(docker exec gitlab gitlab-ctl status 2>&1)
    echo "$result"

    # 添加分隔线以便于阅读
    echo "----------------------------------------"

    # 将时间和结果写入文件
    {
        echo "执行时间: $current_time"
        echo "$result"
        echo "----------------------------------------"
    } >> gitlab.log

    # 等待5秒
    sleep 5
done
EOF

2.2 运行

# 赋予文件执行权限
chmod +x getGitlabStatus.sh

# 运行脚本
执行时间: 2025-06-09 18:37:10
run: crond: (pid 455) 1867s; run: log: (pid 467) 1864s
run: gitaly: (pid 295) 1879s; run: log: (pid 317) 1878s
run: gitlab-workhorse: (pid 650) 1810s; run: log: (pid 521) 1848s
run: logrotate: (pid 260) 1891s; run: log: (pid 268) 1890s
run: nginx: (pid 551) 1843s; run: log: (pid 571) 1840s
run: postgresql: (pid 326) 1873s; run: log: (pid 336) 1872s
run: puma: (pid 470) 18s; run: log: (pid 477) 18s # 这里我故意这样写的,代表这个问题 
run: redis: (pid 275) 1885s; run: log: (pid 285) 1884s
run: sidekiq: (pid 485) 1855s; run: log: (pid 496) 1854s
run: sshd: (pid 36) 1902s; run: log: (pid 35) 1902s
----------------------------------------

2.3、解决方式

  • 调整gitlab 配置文件,这个主要是 puma['worker_processes'] = 0 导致的,禁用即可
  • 下面的参数和cpu核心数有关系,我的是4核,所以设置2个,避免占用太多内存 设置512
# 禁用 PUMA 集群模式, worker_processes 设置0可能会导致502问题
#puma['worker_processes'] = 0
puma['min_threads'] = 2
puma['max_threads'] = 2
puma['per_worker_max_memory_mb'] = 512

版权声明:
作者:Akiraka
链接:https://www.akiraka.net/other/1614.html
来源:Akiraka
文章版权归作者所有,未经允许请勿转载。

THE END
分享
二维码
海报
排查 GitLab 间接性502问题
一、简介 版本 备注 18.0.0.0 15.0.0.0 - 18.0.0.0 均有这个问题,只是频率不一样 二、排查思路 由于动不动502也不确定那个导致,日志又很多,所以……
<<上一篇
下一篇>>
文章目录
关闭
目 录