1

我的服务器在我的 GitLab 安装中运行了太多的 sidekiq 进程来满足我的需要,GitLab 和 GitLab-CI 都在运行大量进程。我让它在 Ubuntu 14.04 x64 上使用 1GB Ram 20GB SSD 磁盘的 DigitalOcean droplet 上运行,它经常告诉我需要重新启动服务器,当我检查时htop我有 17-30 个 sidekiq 进程正在运行gitlab-rails [0 of 25 busy]

对于 GitLab/GitLab-CI 的 Omnibus 安装,没有关于如何更改 sidekiq 进程数或并发性的明确文档。

调整它并让它通过升级持续存在的最佳方法是什么?

4

3 回答 3

3

至少对于 gitlab-omnibus,我们可以在 /etc/gitlab/gitlab.rb 中轻松做到这一点

##################
# GitLab Sidekiq #
##################

# sidekiq['log_directory'] = "/var/log/gitlab/sidekiq"
# sidekiq['shutdown_timeout'] = 4
# sidekiq['concurrency'] = 25
  sidekiq['concurrency'] = 5

所以现在它显示“[0 of 5 busy]”

于 2016-07-22T09:59:02.527 回答
3

我仍然对随着时间的推移缓慢增长的进程​​数量存在问题,但到目前为止我想出的限制并发设置的最佳解决方案是更改这两个文件:

/opt/gitlab/embedded/service/gitlab-rails/config/initializers/4_sidekiq.rb

/opt/gitlab/embedded/service/gitlab-ci/config/initializers/3_sidekiq.rb

通过config.options[:concurrency] = 2在里面添加Sidekiq.configure_server do |config|

因此,例如,我的最终4_sidekiq.rb文件如下所示:

# Custom Redis configuration
config_file = Rails.root.join('config', 'resque.yml')

resque_url = if File.exists?(config_file)
               YAML.load_file(config_file)[Rails.env]
             else
               "redis://localhost:6379"
             end

Sidekiq.configure_server do |config|
  config.options[:concurrency] = 2
  config.redis = {
    url: resque_url,
    namespace: 'resque:gitlab'
  }

  config.server_middleware do |chain|
    chain.add Gitlab::SidekiqMiddleware::ArgumentsLogger if ENV['SIDEKIQ_LOG_ARGUMENTS']
    chain.add Gitlab::SidekiqMiddleware::MemoryKiller if ENV['SIDEKIQ_MEMORY_KILLER_MAX_RSS']
  end
end

Sidekiq.configure_client do |config|
  config.redis = {
    url: resque_url,
    namespace: 'resque:gitlab'
  }
end
于 2015-07-28T21:32:32.543 回答
0

退房: GitLab 的硬件要求,杀死 sidekick 进程是不行的,GitLab 依靠它来执行很多异步操作。

1G内存不够用!

于 2018-09-18T10:12:54.297 回答