GitLab 系统管理员 Linux 故障排查速查手册
前言
作为 GitLab 系统管理员,掌握 Linux 系统的基本操作命令是必备技能。本文整理了 GitLab 技术支持团队在日常工作中常用的 Linux 命令速查表,帮助管理员快速定位和解决 GitLab 运行环境中的各类问题。
系统信息查询
查看系统发行版信息
不同 Linux 发行版有各自特有的版本信息查询方式:
# Debian/Ubuntu 系统
uname -a # 查看内核信息
lsb_release -a # 显示发行版详细信息
# CentOS/RedHat 系统
cat /etc/centos-release # CentOS 版本
cat /etc/redhat-release # RedHat 版本
# 通用方法(适用于大多数现代发行版)
cat /etc/os-release # 提供完整的系统信息
文件与目录操作
权限管理
GitLab 运行需要正确的文件权限设置:
# 更改文件/目录的所有者和所属组
chown git:git /var/opt/gitlab # 典型GitLab目录
# 设置文件可执行权限
chmod +x script.sh
文件搜索与处理
# 递归创建目录结构
mkdir -p /opt/gitlab/data/repositories
# 查找特定文件
find /var/opt/gitlab -name "*.log" -print
# 文件内容搜索(显示前后2行上下文)
grep -2 "ERROR" /var/log/gitlab/gitlab-rails/production.log
# 快速替换文件内容
sed -i 's/old_text/new_text/g' config.yml
系统资源监控
磁盘与内存使用
# 查看磁盘空间使用情况(人类可读格式)
df -h
# 查看当前目录各文件/目录大小
du -hd 1
# 查找大文件(大于100MB)
find / -type f -size +100M -print0 | xargs -0 du -hs | sort -h
# 查看内存使用情况
free -m
进程监控
# 按内存使用排序进程
top -o %MEM
# 按CPU使用排序进程
top -o %CPU
高级诊断工具
strace 系统调用跟踪
strace 是诊断 GitLab 进程问题的强大工具:
# 基本用法(跟踪特定PID)
strace -tt -T -f -y -yy -s 1024 -p <PID>
# 跟踪所有puma进程
ps auwx | grep puma | awk '{ print " -p " $2}' | xargs strace -tt -T -f -y -yy -s 1024 -o /tmp/puma.txt
注意:strace 会对系统性能产生显著影响,生产环境慎用。
strace 分析工具
GitLab 提供了专门的 strace 分析工具:
# 查看进程摘要
./strace-parser trace.log summary -c15
# 查看特定进程详情
./strace-parser trace.log p 16815
典型文件访问时间参考值:
| 存储类型 | 访问时间范围 | |---------|------------| | EFS | 10-30 ms | | 本地存储 | 0.01-1 ms |
网络诊断
端口与连接检查
# 查看监听端口
netstat -plnt
ss -plnt
# 检查特定端口使用情况
lsof -i :8080
DNS 与网络连通性
# DNS 解析测试
dig +short gitlab.example.com
nslookup gitlab.example.com
# 网络连通性测试
ping gitlab.example.com
traceroute gitlab.example.com
# 网络接口信息
ip address
日志分析
# 查看日志尾部
tail -100 /var/log/gitlab/nginx/gitlab_access.log
# 实时监控日志变化
tail -f /var/log/gitlab/gitlab-rails/production.log
总结
本文列出的命令是 GitLab 系统管理员日常维护中的基础工具集。掌握这些命令能帮助您快速诊断 GitLab 运行环境中的各类问题。对于更复杂的问题,建议结合 GitLab 官方文档和日志分析工具进行深入排查。
重要提示:在生产环境执行任何诊断命令前,请评估其对系统性能的影响,并考虑在维护窗口期进行操作。
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考