Tomcat 应用程序在移动到 Azure 上的 PaaS 平台时运行速度较慢



目前,我的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. 我阅读了帮助,我的 Azure 站点性能很糟糕!以及为什么在 SQL Azure 上运行查询的速度要慢得多?和 Azure SQL 查询速度很慢
  4. 我检查了数据库和应用程序是否位于同一位置。(西欧(

我想问题出在数据库上。

例如,我发现一个查询(使用查询性能见解/长时间运行的查询(,该查询在 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

进行同类比较的最简单方法是将 vCore 模型用于 Azure SQL。 您说您正在使用 S2 数据库,该数据库是 50 DTU 或内核的一半。 您需要扩展到至少一个 S3 才能等效于 1 核虚拟机。

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

最新更新