目录

gitlab推送失败,内存不足的处理

gitlab推送失败,内存不足的处理

git提交时报错:

2025-09-03 20:03:32.583 [info] > git push origin master:master [4866ms]

2025-09-03 20:03:32.583 [info] fatal: Out of memory, malloc failed (tried to allocate 1048576000 bytes)

看了下服务器内存,空余的只有几百M了。

用htop,F6,选择按mem排序,发现有很多gitlab-rails 的 sidekiq 占用几百M的进程。

🔍 为什么 GitLab Sidekiq 会占用这么多内存?

  1. ​多进程架构​​:

    • Sidekiq 是 GitLab 的​​异步任务处理器​​,负责处理后台任务(如发送邮件、仓库同步、CI/CD 流水线调度等)。
    • 默认配置下,GitLab 会启动 ​​多个 Sidekiq 进程​​(每个进程是一个独立的 worker),以实现并发处理任务。
    • 每个进程都需加载完整的 ​​Rails 应用环境​​(包含代码、库、配置),这是内存占用的主要来源。
  2. ​内存组成​​:

    • ​Rails 环境​​:约 300-500 MB/进程(取决于功能启用情况)。
    • ​任务处理缓存​​:执行任务时临时增加的内存。
    • ​连接池​​:数据库、Redis 连接也会占用内存。

修改 /etc/gitlab/gitlab.rb,降低并发数:


sidekiq['max_concurrency'] = 8  # 默认值较高(如25),根据CPU核心数调整(建议 核心数*2)
sidekiq['min_concurrency'] = 2  # 最低并发数

然后重启生效:


sudo gitlab-ctl reconfigure
sudo gitlab-ctl restart sidekiq

又出现推送失败的了, 这次是在本地命令行执行解决的:


git config --global http.postBuffer 0