приложение Tomcat работает медленнее при перемещении на платформе PaaS на Azure - PullRequest
0 голосов
/ 22 сентября 2019

В настоящее время мое веб-приложение работает на двух облачных серверах Windows 2012 R2: один работает на Tomcat, а другой - на SQL Server Express.Серверы Windows имеют 4 ГБ ЦП Intel XEON® E5-2660 v2 @ 2,20 ГГц

Я тестирую свое приложение на PaaS (платформа как услуга) в Azure.Я создал Linux Web App с Tomcat 9.0 для хранения приложения (P1V2) и Azure SQL Server для хранения базы данных (S2)

Один из тестов, который я провел, заключался в сравнении времени, необходимого для создания отчета в Excel(с использованием Apache POI) в обеих системах.

В облачной системе (под управлением SQL Server Express) это заняло около 10 секунд.В Azure это заняло около 35 секунд.

Очевидно, я бы хотел, чтобы система Azure была как минимум такой же быстрой, как система, основанная на SQL Server Express, особенно потому, что облачная система работает с SQL Server Express, который ограничен 1 ГБ.и 1 ядро.

Я попробовал следующее:

  1. Проверено, чтобы увидеть, есть ли какие-либо пики на диаграмме панели инструментов для базы данных.Значимых нет - DTU имеют максимум 25%
  2. Я добавил Query Performance Insight / Recommendations / Automate для автоматической настройки базы данных.Это несколько ускорило, но отнюдь не достаточно.
  3. Я прочитал Справка, производительность моего сайта Azure отстой! и Почему выполнение запроса в SQL Azure намного медленнее? и медленный SQL-запрос Azure
  4. Я проверил, что база данных и приложение находятся в одном месте.(Западная Европа)

Я предполагаю, что проблема в базе данных.

В качестве примера я нашел запрос (с помощью Insight Performance Insight / долго выполняющихся запросов), который выполняется в 2 секунды в Azure и в 0 секунд в SQL Server Express.Обратите внимание, что я НЕ спрашиваю, как оптимизировать этот запрос.Скорее я представляю, что тот факт, что этот запрос занимает больше времени в Azure - с той же схемой базы данных, теми же данными и теми же индексами - может быть подсказкой о том, как ускорить мое приложение в целом.

 SELECT cp.*
    ,(
        SELECT min(market_date)
        FROM mydb.rates ms
        WHERE ms.curr1 = cp.curr1 
            AND ms.curr2= cp.curr2
        ) MIN_MARKETDATE
    FROM pairs cp
            order by curr1, curr2

1 Ответ

1 голос
/ 24 сентября 2019

Самый простой способ сравнить яблоки с яблоками - это использовать модель vCore для своего SQL Azure.Вы говорите, что используете базу данных S2, которая составляет 50 DTU или половину ядра.Вам нужно было бы увеличить как минимум S3, чтобы быть эквивалентом 1 ядра VM.

Это обеспечит вам тестирование с одинаковыми общими настройками и должно помочь вам соответствовать производительности.

...