GitLab/GitLab CI综合包配置sidekiq并发

GitLab/GitLab CI综合包配置sidekiq并发,gitlab,gitlab-ci,Gitlab,Gitlab Ci,在我的GitLab安装中,我的服务器运行了太多的sidekiq进程来满足我的需要,GitLab和GitLab CI都运行了大量的sidekiq进程。我在DigitalOcean droplet上运行它,Ubuntu 14.04 x64上有1GB Ram 20GB SSD磁盘,它经常告诉我需要重新启动服务器,当我检查htop时,我有17-30个sidekiq进程运行gitlab rails[0/25繁忙] 关于如何为GitLab/GitLab CI的综合安装更改sidekiq进程的数量或并发性,没

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

关于如何为GitLab/GitLab CI的综合安装更改sidekiq进程的数量或并发性,没有明确的文档


调整并在升级过程中保持此状态的最佳方法是什么?

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

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

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

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

例如,我的最后一个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

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

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

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

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

例如,我的最后一个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

至少对于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/5忙碌]

至少对于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/5忙碌]

检查:对于GitLab来说,杀死sidekick进程是不可能的,GitLab依靠它来执行许多异步操作

1G内存不够

检查:对于GitLab来说,杀死sidekick进程是不可能的,GitLab依靠它来执行许多异步操作


1G内存不够

它解决了我的部分问题,我成功地改变了并发性,但我仍然有一个问题,进程的数量随着时间的推移缓慢增长。sidekiq进程是否将它们的PID保存在某个PID文件中?如果他们这样做了,您可以在Sidekiq.configure_服务器块中向他们发送一个命令,以便每个新服务器都会杀死现有的服务器。这不是一个真正的解决方案,从一开始就阻止它们启动,但应该会有所帮助。因此,当您升级时,您的“修复”是hosedIt解决了我的部分问题,我成功地改变了并发性,但我仍然有一个问题,进程的数量随着时间的推移缓慢增长。sidekiq进程是否将它们的PID保存在某个PID文件中?如果他们这样做了,您可以在Sidekiq.configure_服务器块中向他们发送一个命令,以便每个新服务器都会杀死现有的服务器。这不是一个真正的解决方案,从一开始就阻止它们启动,但应该会有所帮助。因此,当你升级时,你的“修复程序”已过时。这不起作用,我刚刚尝试过,但我仍然有25个线程。它起作用。。。运行gitlab重新配置命令。。然后重新启动服务器。。。我显著减少了RAM的使用量。你做错了什么…重新启动服务器。。。来吧@Stefan Liedle的解决方案运行良好,无需重新启动服务器。您需要htop的屏幕截图吗?它起作用了。。100%... 你做错了什么-我不知道。。重新配置后,有时需要重新启动服务器或重新启动gitlab。。。。所以只要更新你的手。系统…天哪,你太棒了。这不起作用,我刚刚试过,我仍然有25个线程。它起作用了。。。运行gitlab重新配置命令。。然后重新启动服务器。。。我显著减少了RAM的使用量。你做错了什么…重新启动服务器。。。来吧@Stefan Liedle的解决方案运行良好,无需重新启动服务器。您需要htop的屏幕截图吗?它起作用了。。100%... 你做错了什么-我不知道。。重新配置后,有时需要重新启动服务器或重新启动gitlab。。。。所以只要更新你的手。天哪,你太棒了