Почему одно действие в очереди ActiveJob будет медленнее другого? - PullRequest
1 голос
/ 20 марта 2019

Я делаю некоторые настройки производительности приложения, используя статистику, собранную из skylight.io , и одна страница, которая немного проблематична, показывает, что выполнение задания ActiveJob занимает в среднем 21 мс (вся страница занимает в среднем 131 мс, что составляет 16% времени загрузки).Проблемное действие выглядит следующим образом:

TrackVacancyPageViewJob.perform_later(vacancy.id) unless session[:session_id].present?

Если я посмотрю на другие подобные действия в очереди, они будут выполняться намного быстрее - больше в диапазоне 2 - 5 мс.Вот пример:

AuditExpressInterestEventJob.perform_later(
  datestamp: Time.zone.now.iso8601.to_s,
  vacancy_id: vacancy.id,
  school_urn: vacancy.school.urn,
  application_link: vacancy.application_link
)

Поэтому мой вопрос: что может быть причиной этого?Все они разговаривают с одним и тем же экземпляром redis, но с отдельными очередями.Является ли размер очереди проблемой?Или есть что-то еще, что я не учел?

Вот мои рабочие места:

class TrackVacancyPageViewJob < ApplicationJob
  queue_as :page_view_collector

  def perform(vacancy_id)
    vacancy = Vacancy.find(vacancy_id)
    VacancyPageView.new(vacancy).track
  end
end

class AuditExpressInterestEventJob < ApplicationJob
  queue_as :audit_express_interest_event

  def perform(data)
    AuditData.create(category: :interest_expression, data: data)
  end
end

И мой sidekiq.yml здесь:

:queues:
  - [ mailers, 3 ]
  - [ queue_daily_alerts, 3 ]
  - [ email_daily_alerts, 4 ]
  - [ page_view_collector, 2 ]
  - [ performance_platform, 2 ]
  - [ google_indexing, 2]
  - [ import_school_data, 1 ]
  - [ update_vacancy_spreadsheet, 1 ]
  - [ audit_published_vacancy, 1 ]
  - [ audit_express_interest_event, 1 ]
  - [ audit_search_event, 1 ]
  - [ audit_feedback, 1 ]
  - [ audit_spreadsheet, 1 ]
update_vacancy_spreadsheet:
  :concurrency: 1
audit_published_vacancy:
  :concurrency: 1
audit_express_interest_event:
  :concurrency: 1
audit_search_event:
  :concurrency: 1
audit_feedback:
  :concurrency: 1
audit_spreadsheet:
  :concurrency: 1
audit_toc_acceptance_event:
  :concurrency: 1
mailers:
  :concurrency: 2
...