1

私のサーバーでは、GitLab インストールでのニーズに合わせてあまりにも多くの sidekiq プロセスが実行されています。GitLab と GitLab-CI の両方で大量のプロセスが実行されていました。Ubuntu 14.04 x64で1GB RAM 20GB SSDディスクを搭載したDigitalOceanドロップレットで実行していますが、サーバーを再起動する必要があることを定期的に教えてくれました。確認すると、htop17〜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

時間の経過とともにプロセス数が徐々に増えていくという問題はまだありますが、同時実行設定を制限するためにこれまでに思いついた最善の解決策は、次の 2 つのファイルを変更することです。

/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のハードウェア要件、およびサイドキックプロセスの強制終了は禁止されています.GitLabはそれに依存して多くの非同期アクションを実行します.

メモリ1Gじゃ足りない!

于 2018-09-18T10:12:54.297 に答える