【问题标题】:Tomcat application runs slower when moved to PaaS platform on AzureTomcat 应用程序在迁移到 Azure 上的 PaaS 平台时运行速度变慢
【发布时间】:2020-01-22 20:26:28
【问题描述】:

目前,我的 Web 应用程序在两台基于云的 Windows 2012 R2 服务器上运行——一台运行 Tomcat,一台运行 SQL Server Express。 Windows 服务器是 4GB Intel XEON(R) CPU E5-2660 v2 @2.20 Gghz

我正在 Azure 的 PaaS(平台即服务)上测试我的应用程序。 我使用 Tomcat 9.0 创建了一个 Linux Web 应用程序来保存应用程序 (P1V2) 和一个 Azure SQL Server 来保存数据库 (S2)

我做的一个测试是比较在两个系统上生成 Excel 报告(使用 Apache POI)所需的时间。

在云系统(运行 SQL Server Express)上大约需要 10 秒。在 Azure 上大约需要 35 秒。

显然,我希望 Azure 系统至少与基于 SQL Server Express 的系统一样快,尤其是当云系统运行 SQL Server Express 时,其上限为 1GB 和 1 个核心。

我尝试了以下方法:

  1. 检查仪表板图表中是否有任何峰值 数据库。没有显着的 - DTU 最高为 25%
  2. 我自动添加了Query Performance Insight / Recommendations / Automate 调整数据库。这确实加快了速度,但绝不是 够了。
  3. 我读过Help, My Azure Site Performance Sucks!Why is running a query on SQL Azure so much slower?Azure SQL query slow
  4. 我检查了数据库和应用程序是否位于同一位置。 (西欧)

我想问题出在数据库上。

例如,我发现一个查询(使用 Query Performance Insight / Long Running Queries)在 Azure 上运行时间为 2 秒,在 SQL Server Express 上运行时间为 0 秒。请注意,我不是在问如何优化此查询。相反,我在想象,这个查询在 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

【问题讨论】:

    标签: sql-server azure cloud paas


    【解决方案1】:

    进行同类比较的最简单方法是将 vCore 模型用于您的 Azure SQL。您说您使用的是 50 DTU 或一半核心的 S2 数据库。您需要扩展至至少一个 S3 才能相当于一个 1 核 VM。

    这将确保您使用相同的常规设置进行测试,并且应该可以帮助您匹配性能。

    【讨论】:

    • 感谢@Ken W MSFT。我不确定您的意思是我应该实际尝试 vCore 定价,还是 vCore 等效(即 S3)。无论如何,我尝试了前者——我将我的数据库从标准 S2:50 个 DTU、250 GB 存储扩展到通用:无服务器、Gen5、1 vCore、16 GB 存储用于数据库。一切似乎运行速度大约是旧系统的两倍,但仍然不如旧系统快。我在我的问题中复制的 SQL 查询现在运行 1 秒。
    猜你喜欢
    • 2018-09-23
    • 2016-02-20
    • 2016-09-14
    • 1970-01-01
    • 2013-04-10
    • 1970-01-01
    • 2023-03-17
    • 2015-10-19
    • 2014-08-18
    相关资源
    最近更新 更多