低配置服务器GitLab周期性502异常(Puma频繁重启)求助
解决低配置服务器上GitLab Puma周期性重启导致的502错误
从你提供的日志和配置来看,Puma每10分钟左右优雅停止并重启,核心原因是低配置服务器资源不足,触发了进程内存限制或者系统OOM(内存耗尽)。以下是针对性的优化方案:
一、大幅调整Puma配置,降低内存占用
当前Puma的内存限制和线程数对低配置服务器仍偏高,建议修改为:
puma['worker_processes'] = 1 # 直接指定1个worker,避免自动分配多进程 puma['min_threads'] = 1 puma['max_threads'] = 2 # 减少线程数,降低单进程内存消耗 puma['per_worker_max_memory_mb'] = 256 # 减半内存限制,避免触发重启阈值 puma['worker_timeout'] = 60 # 延长worker超时时间,防止误判进程无响应
二、优化Sidekiq配置,减少资源抢占
Sidekiq高并发会占用大量CPU和内存,间接导致Puma资源不足,调整为:
sidekiq['max_concurrency'] = 2 # 降低并发数 sidekiq['max_memory_limit'] = '256MB' # 给Sidekiq加内存限制
三、关闭更多非核心服务
除了你已经关闭的服务,再关闭以下非必要组件,进一步释放资源:
gitlab_rails['incoming_email_enabled'] = false gitlab_rails['outgoing_email_enabled'] = false gitlab_pages['enable'] = false gitaly['concurrency'] = { 'default' => 2 # 降低Gitaly并发,减少磁盘和内存占用 }
四、检查系统OOM日志,确认是否内存耗尽
执行以下命令查看系统是否因为内存不足杀掉进程:
dmesg | grep -i oom # 或者用journalctl查看 journalctl -k | grep -i oom
如果存在OOM记录,建议给服务器添加swap分区缓解内存压力:
# 创建1GB swap文件 fallocate -l 1G /swapfile chmod 600 /swapfile mkswap /swapfile swapon /swapfile # 设置开机自动挂载 echo '/swapfile none swap sw 0 0' >> /etc/fstab
五、生效配置并验证
修改完/etc/gitlab/gitlab.rb后,执行以下命令使配置生效:
gitlab-ctl reconfigure gitlab-ctl restart
之后通过gitlab-ctl tail puma持续观察日志,确认Puma是否还会周期性重启。
内容的提问来源于stack exchange,提问作者bing liran
相关产品推荐
相关产品推荐

