Background-
У меня есть приложение .NET, которое выполняется как один многопоточный процесс в непрерывной веб-работе службы приложений Azure. В приложении есть потоки, которые (1) подключают его к REST API и извлекают данные, которые хранятся в базе данных SQL Azure, (2) запрашивают данные из базы данных SQL, выполняют некоторые вычисления, затем сохраняют результаты, (3) извлекаютдополнительные данные, сравнивает их с отправленным правилом и отправляет уведомления по электронной почте, используя SMTP SendGrid, и текстовые сообщения, используя Twilio.
Это приложение отлично работает в качестве запланированной задачи в виртуальном стандарте Windows Server 2016 [на котором также размещается SQL (База данных 2016)] с 8 ядрами и 8 ГБ ОЗУ, потребляющими всего 0-15% ЦП и только около 100 МБ ОЗУ.
Проблема -
После перемещения в непрерывную веб-работу Azure(Стандартный уровень S1), подключенный к Azure SQL (стандартный уровень S20) и запустив службу, ЦП перешел на 100% как для SQL, так и для службы приложений. Обновлен сервис приложений до уровня P2V2, а база данных - до уровня P1, а CPU - на уровне около 60% для службы приложений и 70% для SQL, но все же намного выше, чем ожидалось.
Кто-нибудь сталкивался с этим? Кто-нибудь знает об ограничениях многопоточности или способности Azure обрабатывать сложные приложения в WebJob? Предложения на что посмотреть? Не могу понять, почему в Azure потребуется гораздо больше ресурсов по сравнению с виртуальной машиной. Хотелось попробовать и перейти на сервер без поддержки для гибкости и масштабируемости.
Нет ошибок, и приложение работает нормально, но хотел бы добавить дополнительную функциональность в приложение, но обеспокоено потреблением большего количества ресурсов.