访问公司gitlab出现 502 Bad Gateway 错误,已经解决

news2024/10/11 20:12:42

文章目录

  • 1、通过 WindTerm 连接 Ubuntu
  • 2、检查 GitLab 服务状态
  • 3、查看 Unicorn 日志
  • 4、检查 Unicorn 的 stderr 日志
  • 5、检查 PID
  • 6、停止当前运行的 Unicorn 服务
  • 7、确认 Unicorn 已停止
  • 8、删除陈旧的 .pid 文件
  • 9、重新启动 GitLab 服务
  • 10、检查状态
  • 11、查看 Unicorn 日志

我公司的gitlab是部署在Ubuntu: 乌班图(也有友帮拓、优般图等译名)

1、通过 WindTerm 连接 Ubuntu

在这里插入图片描述

2、检查 GitLab 服务状态

首先,检查 GitLab 的各个服务是否正常运行:

sudo gitlab-ctl status
root@ubuntu20:~# sudo gitlab-ctl status
run: alertmanager: (pid 1422) 2245853s; run: log: (pid 1416) 2245853s
run: gitaly: (pid 1421) 2245853s; run: log: (pid 1414) 2245853s
run: gitlab-monitor: (pid 1440) 2245853s; run: log: (pid 1431) 2245853s
run: gitlab-workhorse: (pid 1436) 2245853s; run: log: (pid 1426) 2245853s
run: grafana: (pid 1437) 2245853s; run: log: (pid 1429) 2245853s
run: logrotate: (pid 8999) 2934s; run: log: (pid 1439) 2245853s
run: nginx: (pid 1434) 2245853s; run: log: (pid 1428) 2245853s
run: node-exporter: (pid 1438) 2245853s; run: log: (pid 1430) 2245853s
run: postgres-exporter: (pid 1425) 2245853s; run: log: (pid 1418) 2245853s
run: postgresql: (pid 1415) 2245853s; run: log: (pid 1412) 2245853s
run: prometheus: (pid 1432) 2245853s; run: log: (pid 1420) 2245853s
run: redis: (pid 1419) 2245853s; run: log: (pid 1413) 2245853s
run: redis-exporter: (pid 1424) 2245853s; run: log: (pid 1417) 2245853s
run: sidekiq: (pid 1435) 2245853s; run: log: (pid 1423) 2245853s
run: unicorn: (pid 426) 1s; run: log: (pid 1427) 2245853s

根据 gitlab-ctl status 输出的内容,GitLab 的大部分服务都在运行,但是 unicorn 进程的 PID 是 426,运行了仅 1 秒钟。unicorn 是 GitLab 的应用服务器,它处理主要的 HTTP 请求。如果 unicorn 反复重启或无法正常运行,这很可能是导致 502 Bad Gateway 错误的原因。

3、查看 Unicorn 日志

首先,检查 Unicorn 的日志,看看是什么原因导致它无法正常启动。日志文件位于 /var/log/gitlab/unicorn/。
运行以下命令查看 Unicorn 日志:

sudo cat /var/log/gitlab/unicorn/current
root@ubuntu20:~# sudo cat /var/log/gitlab/unicorn/current
2024-10-10_07:09:33.63838 failed to start a new unicorn master
2024-10-10_07:09:33.64968 starting new unicorn master
2024-10-10_07:09:33.87437 master failed to start, check stderr log for details
2024-10-10_07:09:34.88615 failed to start a new unicorn master
2024-10-10_07:09:34.89920 starting new unicorn master
2024-10-10_07:09:35.13327 master failed to start, check stderr log for details
2024-10-10_07:09:36.14580 failed to start a new unicorn master
2024-10-10_07:09:36.15991 starting new unicorn master
2024-10-10_07:09:36.40057 master failed to start, check stderr log for details
2024-10-10_07:09:37.41466 failed to start a new unicorn master
2024-10-10_07:09:37.42728 starting new unicorn master
2024-10-10_07:09:37.66208 master failed to start, check stderr log for details
2024-10-10_07:09:38.67082 failed to start a new unicorn master
2024-10-10_07:09:38.68441 starting new unicorn master
2024-10-10_07:09:38.91950 master failed to start, check stderr log for details

查看日志中是否有任何错误信息,比如内存不足、数据库连接问题等。
从日志中可以看出,Unicorn 服务的 master 进程无法启动,日志提到 master failed to start, check stderr log for details,这意味着你需要查看 stderr 日志文件中的更多详细信息,以了解具体的启动失败原因。

4、检查 Unicorn 的 stderr 日志

Unicorn 的 stderr 日志通常可以在以下路径中找到:

sudo cat /var/log/gitlab/unicorn/unicorn_stderr.log
root@ubuntu20:~# sudo cat /var/log/gitlab/unicorn/unicorn_stderr.log
ArgumentError: Already running on PID:1487 (or pid=/opt/gitlab/var/unicorn/unicorn.pid is stale)
  /opt/gitlab/embedded/lib/ruby/gems/2.6.0/gems/unicorn-5.4.1/lib/unicorn/http_server.rb:205:in `pid='
  /opt/gitlab/embedded/lib/ruby/gems/2.6.0/gems/unicorn-5.4.1/lib/unicorn/http_server.rb:137:in `start'
  /opt/gitlab/embedded/lib/ruby/gems/2.6.0/gems/unicorn-5.4.1/bin/unicorn:126:in `<top (required)>'
  /opt/gitlab/embedded/bin/unicorn:23:in `load'
  /opt/gitlab/embedded/bin/unicorn:23:in `<top (required)>'
ArgumentError: Already running on PID:1487 (or pid=/opt/gitlab/var/unicorn/unicorn.pid is stale)
  /opt/gitlab/embedded/lib/ruby/gems/2.6.0/gems/unicorn-5.4.1/lib/unicorn/http_server.rb:205:in `pid='
  /opt/gitlab/embedded/lib/ruby/gems/2.6.0/gems/unicorn-5.4.1/lib/unicorn/http_server.rb:137:in `start'
  /opt/gitlab/embedded/lib/ruby/gems/2.6.0/gems/unicorn-5.4.1/bin/unicorn:126:in `<top (required)>'
  /opt/gitlab/embedded/bin/unicorn:23:in `load'
  /opt/gitlab/embedded/bin/unicorn:23:in `<top (required)>'

从错误日志中可以看出,Unicorn 尝试启动时遇到了 ArgumentError: Already running on PID:1487 错误。这意味着 Unicorn 认为自己已经在运行,或者 unicorn.pid 文件是陈旧的,并且没有正确清理。
这是一个常见问题,通常发生在 Unicorn 崩溃或意外停止后,未正确删除 .pid 文件,从而阻止新的 Unicorn 实例启动

5、检查 PID

首先,确认 Unicorn 是否真的在运行:

ps -ef | grep unicorn

如果 Unicorn 实例已经运行,会显示它的进程信息。如果没有运行但仍然有 .pid 文件,则是因为这个 .pid 文件已经陈旧。

root@ubuntu20:~# ps -ef | grep unicorn
root      1410  1394  0 Sep15 ?        00:09:06 runsv unicorn
root      1427  1410  0 Sep15 ?        00:01:54 svlogd -tt /var/log/gitlab/unicorn
git       4369  1410  0 15:03 ?        00:00:00 /bin/bash /opt/gitlab/embedded/bin/gitlab-unicorn-wrapper
git       4384  4369  0 15:03 ?        00:00:00 /opt/gitlab/embedded/bin/unicorn -D -E production -c /var/opt/gitlab/gitlab-rails/etc/unicorn.rb /opt/gitlab/embedded/service/gitlab-rails/config.ru
root      4386 10412  0 15:03 pts/0    00:00:00 grep --color=auto unicorn

从输出结果中可以看出,Unicorn 的相关进程已经在运行:

  • gitlab-unicorn-wrapper (PID 4369)
  • unicorn 主进程 (PID 4384)

但是,你之前遇到的错误显示 Unicorn 已经在运行,可能是由于在尝试启动新实例时,旧的 Unicorn 进程仍在运行。这种情况通常发生在重启不干净或崩溃时。
解决步骤:停止当前运行的 Unicorn 服务

6、停止当前运行的 Unicorn 服务

为了清理当前的进程,可以停止 GitLab 的 Unicorn 服务:

sudo gitlab-ctl stop unicorn

这将停止所有 Unicorn 相关的进程。

root@ubuntu20:~# sudo gitlab-ctl stop unicorn
ok: down: unicorn: 0s, normally up

7、确认 Unicorn 已停止

再次运行以下命令,确保所有 Unicorn 进程都已停止:

ps -ef | grep unicorn
root@ubuntu20:~# ps -ef | grep unicorn
root      1410  1394  0 Sep15 ?        00:09:06 runsv unicorn
root      1427  1410  0 Sep15 ?        00:01:54 svlogd -tt /var/log/gitlab/unicorn
root      6447 10412  0 15:05 pts/0    00:00:00 grep --color=auto unicorn

从当前的输出结果来看,Unicorn 的主要进程(如 gitlab-unicorn-wrapper 和 unicorn)已经不在运行,只有日志相关的进程 (runsv unicorn 和 svlogd) 在运行,这表示 Unicorn 已成功停止。
接下来,可以按照以下步骤继续操作:

8、删除陈旧的 .pid 文件

确保删除陈旧的 Unicorn PID 文件,以避免启动时冲突:

sudo rm /opt/gitlab/var/unicorn/unicorn.pid
root@ubuntu20:~# sudo rm /opt/gitlab/var/unicorn/unicorn.pid

9、重新启动 GitLab 服务

在清理 .pid 文件后,重新启动 GitLab 服务,确保 Unicorn 重新正常启动:

sudo gitlab-ctl restart
root@ubuntu20:~# sudo gitlab-ctl restart
ok: run: alertmanager: (pid 6491) 0s
ok: run: gitaly: (pid 6500) 0s
ok: run: gitlab-monitor: (pid 6523) 1s
ok: run: gitlab-workhorse: (pid 6525) 0s
ok: run: grafana: (pid 6535) 1s
ok: run: logrotate: (pid 6545) 0s
ok: run: nginx: (pid 6627) 0s
ok: run: node-exporter: (pid 6632) 1s
ok: run: postgres-exporter: (pid 6640) 0s
ok: run: postgresql: (pid 6650) 1s
ok: run: prometheus: (pid 6659) 0s
ok: run: redis: (pid 6667) 1s
ok: run: redis-exporter: (pid 6671) 0s
ok: run: sidekiq: (pid 6678) 1s
ok: run: unicorn: (pid 6684) 0s

10、检查状态

重新启动后,检查所有 GitLab 服务的状态,确保 Unicorn 进程已经成功启动:

sudo gitlab-ctl status
root@ubuntu20:~# sudo gitlab-ctl status
run: alertmanager: (pid 6491) 15s; run: log: (pid 1416) 2246223s
run: gitaly: (pid 6500) 14s; run: log: (pid 1414) 2246223s
run: gitlab-monitor: (pid 6523) 14s; run: log: (pid 1431) 2246223s
run: gitlab-workhorse: (pid 6525) 13s; run: log: (pid 1426) 2246223s
run: grafana: (pid 6535) 13s; run: log: (pid 1429) 2246223s
run: logrotate: (pid 6545) 12s; run: log: (pid 1439) 2246223s
run: nginx: (pid 6627) 12s; run: log: (pid 1428) 2246223s
run: node-exporter: (pid 6632) 12s; run: log: (pid 1430) 2246223s
run: postgres-exporter: (pid 6640) 11s; run: log: (pid 1418) 2246223s
run: postgresql: (pid 6650) 11s; run: log: (pid 1412) 2246223s
run: prometheus: (pid 6659) 10s; run: log: (pid 1420) 2246223s
run: redis: (pid 6667) 10s; run: log: (pid 1413) 2246223s
run: redis-exporter: (pid 6671) 9s; run: log: (pid 1417) 2246223s
run: sidekiq: (pid 6678) 9s; run: log: (pid 1423) 2246223s
run: unicorn: (pid 6684) 8s; run: log: (pid 1427) 2246223s

11、查看 Unicorn 日志

最后,查看 Unicorn 的日志文件,确保没有新的错误:

sudo cat /var/log/gitlab/unicorn/current
root@ubuntu20:~# sudo cat /var/log/gitlab/unicorn/current
2024-10-11_07:05:24.03624 Received TERM from runit, sending to process group (-PID)
2024-10-11_07:06:27.33565 starting new unicorn master
2024-10-11_07:06:47.00138 adopted new unicorn master 6699

从日志中可以看出,Unicorn 服务在 2024-10-11_07:06:27 启动了一个新的主进程 (unicorn master),并且在 2024-10-11_07:06:47 成功接管了新的 Unicorn 主进程 (PID 6699),日志中没有显示任何错误。这意味着 Unicorn 服务现在已经成功启动,并且运行正常。

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2205723.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

会话好友区设计与开发(五)

会话好友区设计与开发&#xff08;五&#xff09; 前言 在上一集&#xff0c;我们完成了选中和切换item的颜色变化的功能&#xff0c;那么这一集&#xff0c;我们将开始封装一些必要的函数。 需求 我们需要封装一些逻辑&#xff0c;那么我们也要进行分析。 在上一集我们虽…

LeetCode:1518.换水问题(模拟 JAVA)

目录 1518.换水问题 题目描述&#xff1a; 实现代码与解析&#xff1a; 模拟 1518.换水问题 题目描述&#xff1a; 超市正在促销&#xff0c;你可以用 numExchange 个空水瓶从超市兑换一瓶水。最开始&#xff0c;你一共购入了 numBottles 瓶水。 如果喝掉了水瓶中的水&am…

coredump设置

coredump路径查看及设置 coredump路径查看 命令1&#xff1a; cat /proc/sys/kernel/core_pattern 命令2&#xff1a; /sbin/sysctl kernel.core_pattern coredump路径修改 临时修改&#xff1a;echo ‘/var/log/%e.core.%p’ > /proc/sys/kernel/core_pattern 永久修改…

基于Java的企业仓库管理系统的设计与实现(论文+源码)_kaic

摘 要 随着信息技术的不断发展&#xff0c;以及网络技术的广泛用&#xff0c;企业企业仓库存储的信息量也越来越大&#xff0c;信息变得复杂。基于人工的数据收集方式&#xff0c;在耗费大量人力的同时也降低了信息采集的效率&#xff0c;例如影响了信息正确率和信息的录入速度…

项目解决方案:连锁店视频监控接入汇聚联网解决方案

目录 一.项目背景 二.建设目标和详细需求分析 2.1建设总目标 2.2需求分析 三.系统特色 3.1数字&#xff0c;高清&#xff0c;网络化系统 3.2安全性 3.3可拓展性 3.4资源利旧&#xff0c;节约成本 四.系统实现 4.1系统方案设计 4.2拓扑组网说明 4.3用户权限管理实现…

Assignment 1 (10月12日截止)

Section 1.1 T12 &#x1f609; S o l v e &#x1f447; Solve&#x1f447; Solve&#x1f447; x x x 1 1 1- 3 x 3x 3x 2 2 2 4 x 4x 4x 3 3 3 − 4 -4 −4 3 x 3x 3x 1 1 1 − 7 x -7x −7x 2 2 2 7 x 7x 7x 3 3 3 − 8 -8 −8 − 4 x -4x −4x 1 1 1 6 x 6x 6x…

yarn install 报错 Expected version “>=18“,Got “16.20.0“

项目在初始化 (yarn install),一直报错以下信息&#xff0c;切换node 版本无法修改 1、首先使用命令检查&#xff0c;strict-ssl 是否为true和ignore-engines是否为false yarn config list2、如果不为 1 描述的值&#xff0c;使用以下命令设置 yarn config set strict-ssl t…

20241011给华硕的FX607JVCPU安装WIN10【intel的13代酷睿】

20241011给华硕的FX607JVCPU安装WIN10【intel的13代酷睿】 2024/10/11 17:55 缘起&#xff1a;同事新买的华硕笔记本电脑&#xff0c;WIN11的&#xff0c;需要降级为WIN10。 使用U盘安装WIN10的时候&#xff0c;常见现象&#xff1a;安装的时候找不到固态硬盘。 电脑使用的是&a…

推荐一个边缘物联网平台

AIoTedge是一个AIoT边缘物联网计算平台&#xff0c;它结合了边缘计算、物联网平台和泛协议软网关的功能。这个平台采用边云协同的架构&#xff0c;可以在多个点部署&#xff0c;与IoT云平台配合使用&#xff0c;提供分布式的AIoT处理能力。这种架构特别适用于需要AI云端训练和本…

HTTP代理的优点和局限性

在这个信息爆炸的时代&#xff0c;网络已成为我们获取知识、交流思想、开展商务的重要平台。但随之而来的隐私泄露、网络安全威胁、以及无处不在的网络监控&#xff0c;却让我们的每一次在线活动都充满了风险。 在这样的背景下&#xff0c;HTTP代理技术应运而生&#xff0c;它不…

歌曲怎样去掉人声留伴奏?教你几招,瞬间去除歌曲人声

在数字音乐时代&#xff0c;对音频进行编辑和处理已成为一种常见的需求。其中&#xff0c;将歌曲中的人声去除&#xff0c;仅保留伴奏部分&#xff0c;是许多音乐爱好者和创作者经常面临的任务。无论是为了制作卡拉OK伴奏&#xff0c;还是进行音乐混音和再创作&#xff0c;掌握…

养宠人崩溃的季节又到了,有什么吸浮毛宠物空气净化器推荐?

害&#xff0c;怎么转眼又到秋天了&#xff0c;猫咪又迎来了换毛期。这段时间我撸猫都不敢用力&#xff0c;随便摸摸就能带下满手的毛发&#xff0c;都可以做成毛毡了。我家猫还贼活泼&#xff0c;每天下班扑向我&#xff0c;还没能来得及换衣服&#xff0c;又收获一身满满的猫…

IC开发——数字电路设计简介

1. 前言 我们说的数字电路&#xff0c;一般是指逻辑数字电路&#xff0c;即通过逻辑门组合成的电路&#xff0c;也即我们常说的逻辑IC。IC除了逻辑IC之外&#xff0c;还有模拟IC&#xff0c;存储IC等。 IC设计&#xff0c;需要学习数字电路&#xff0c;需要学习Verilog/VHDL等…

TypeError: Cannot read properties of undefined (reading ‘offsetHeight’)

TypeError: Cannot read properties of undefined (reading ‘offsetHeight’) 前端报错 TypeError: Cannot read properties of undefined (reading offsetHeight)错误通常意味着你试图访问一个未定义或尚未渲染到DOM中的元素的offsetHeight属性。这个错误常见于异步数据处理、…

DAPLINK 之仿真调试器介绍

文章目录 前言1 协议1.1 JTAG 协议1.2 SWD 协议 2 调试仿真器2.1 ST-Link 仿真器2.2 ULink 仿真器2.3 J-Link 仿真器2.4 DAPLINK 仿真器 3 LINKer 搭配 CLion 的使用3.1 ST-Link CLion STM32F103RCT63.2 DAPLINK CLion STM32F103RCT6 参考 前言 本文算是 DAPLINK 学习的一个…

PyQt5 的 designer.exe 使用布局详解

文章目录 采用designer.exe原因一、打开 designer.exe二、界面布局介绍1. 菜单栏和工具栏2. 组件面板3. 窗体设计区域4. 属性编辑器5. 信号 / 槽编辑器 三、示例代码及图片展示 采用designer.exe原因 Python使用PyQt5界面开发为啥不使用py文件创建而是采用designer.exe原因&…

通过redis实现高性能计费处理逻辑

计费服务一般都是跟资金相关&#xff0c;所以它在系统中是非常核心的模块&#xff0c;要保证服务的高可用、事务一致性、高性能。服务高可用需要集群部署&#xff0c;要保证事务一致性可以通过数据库来实现&#xff0c;但是只通过数据库却很难实现高性能的系统。 这篇文章通过使…

人工智能——引领未来的科技革命

随着科技的飞速发展&#xff0c;人工智能&#xff08;AI&#xff09;已经成为我们生活中不可或缺的一部分。从智能手机的语音助手到自动驾驶汽车&#xff0c;从智能家居到工业自动化&#xff0c;AI的应用正在不断拓展&#xff0c;其影响力也在持续增强。今天&#xff0c;我们将…

图像的两种结构

彩色图像数据 (color_image_data) 彩色图像数据是一个三维数组&#xff0c;其中每个维度分别对应&#xff1a; 高度&#xff1a;图像的行数。宽度&#xff1a;图像的列数。颜色通道&#xff1a;每个像素的颜色信息&#xff0c;通常为RGB三个通道。 例如&#xff0c;一个3x3像…

【进阶】面向对象之权限修饰符代码块

文章目录 权限修饰符权限修饰符的使用规则 代码块分类局部代码块(了解就行)构造代码块(了解就行)静态代码块(重点) 权限修饰符 权限修饰符的使用规则 成员变量私有方法公开 特例&#xff1a; 如果方法中的代码是抽取其他方法中共性代码&#xff0c;这个方法一般也私有. 代码…