У меня проблема с производительностью заданий Hangfire при переходе с традиционного хостинга на службу приложений Azure.Сервер Hangfire работает просто отлично с минимальной конфигурацией, но когда я сравниваю выполнение одного и того же кода в задании Hangfire с выполнением на контроллере MVC, я получаю разницу в производительности в 10 раз в пользу подхода с использованием контроллера.Все сделано в одном экземпляре сервера.Похоже, что поток Hangfire часто каким-то образом прерывается или регулируется.
Возможно, проблема связана с базой данных хранилища заданий, поскольку, как представляется, на производительность влияет незначительное увеличение / уменьшение базы данных SQL Azure (базовая)./ 5DTU <-> стандарт / 50DTU).
Увеличение / уменьшение службы приложений не имеет большого значения.Загрузка ЦП службы приложений никогда не превышает 50%.
Одновременно выполняется только одно задание.Существует только один экземпляр BackgroundJobServer.Я попытался ограничить количество выделенных рабочих потоков до 1.
Выполненный код, который испытывает снижение производительности, выполняет операции ввода-вывода файлов, итерации массивов, манипуляции с локальной структурой DataTable и т. Д.
Время выполнения 10.000 итераций блоков кода через вызов контроллера: 3348 мс.
Время выполнения 10.000 итераций блоков кода через вызов Hangfire в одном задании: 37045мс.
Оба в одном экземпляре приложения Azure.