Я изучаю медленное время прогрева для моего производственного приложения, и у меня появились неожиданные результаты.
Тестирование на различных Azure VM показало, что время прогрева должно быть хорошо связано с производительностью сервера приложений (так что это не внешний запрос, включая sql), но действительно интересным является сравнение с Azure Web Apps и моей локальной локальной машиной ( все время составляют средние значения от примерно 3 пробегов):
VM A0: >1m
VM A2: 13s
VM D2V2: 6.8s
VM D5V2: 7.8s
Wep App P2: 25s
Web App S2: 26.5s
My local machine: 6.6s
Мой локальный компьютер i5 с 3,3 ГГц.
Локальная машина работает быстрее, даже если она подключается к одной базе данных SQL Azure через Интернет, а запрос включает проверку модели Entity Framework.
Все тесты используют .NET 4.6.1, новейшую версию в настоящее время.
Очевидный вывод:
- Мой четырехъядерный настольный компьютер быстрее любого размера Azure VM для заданий, которые не являются параллелизуемыми.
- Azure Web Apps работает на картофеле, даже если вы готовы потратить 500 баксов в месяц.
Это кажется подозрительным. Любые идеи, что еще может произойти? Или что тестировать?
РЕДАКТИРОВАТЬ после некоторого профилирования: Ни один из следующих вариантов не проливает свет на мой вопрос, но это все еще интересная информация (протестирована на другой A2 VM с общим временем запроса 20 с при подключении профайлера):
- 58% дробит.
- Блокировка файлов IO практически равна нулю (приложение было запущено до этого, поэтому я думаю, что все необходимые части dll находятся в кеше памяти).
- < 1% - запросы SQL Azure.
- Таким образом, остальная часть 90% времени работы должна быть выполнена .NET или служебной информацией профайлера.
- Сам профайлер имеет довольно накладные расходы, так как запрос выполняется всего за 15 секунд без него (я использовал пробную версию JetTrack dotTrace, которая мне очень нравится)
- 50% времени находится во время первого запроса с Entity Framework, 80% которого - джиттинг
- 15% - это первое использование SignalR, почти без джинга (что-то вроде абсурда)
Почти не выполняется распараллеливание.