【发布时间】:2016-11-08 21:14:21
【问题描述】:
我有一个构建为 spring boot fat jar 的应用程序。 我根据"official" documentation 将它托管在 azure 网站中,web.config 也类似:
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<system.webServer>
<handlers>
<add name="httpPlatformHandler" path="*" verb="*" modules="httpPlatformHandler" resourceType="Unspecified" />
</handlers>
<httpPlatform processPath="%JAVA_HOME%\bin\java.exe" arguments="-Djava.net.preferIPv4Stack=true -Dserver.port=%HTTP_PLATFORM_PORT% -jar "%HOME%\site\wwwroot\my-web-project.jar"">
</httpPlatform>
</system.webServer>
</configuration>
应用程序在结构上是单片的,不是太大,但会进行一些映射,并且有一些层要初始化,因此本地启动时间约为 12 秒。 它在内存数据库中运行 H2 仅用于测试目的。
实际部署并让它在 azure 网站上运行从来都不是真正的问题,但存在一些真正的性能问题,至少在我的设置方面是这样。
一些感兴趣的设置:
- 标准 S1 实例(在撰写本文时成本约为 40 美元/月)。
- Webapp 配置为:
- Tomcat8(不应该真的很重要,因为胖 jar 运行嵌入式 tomcat)
- JDK 8
- 始终开启
为了能够将这些数字与我在具有相似(但不相同)规格和价格范围的 Azure VM 上运行应用程序的设备进行比较,并在该虚拟机上运行应用程序。
以下是一些结果:
应用的启动时间:
- Azure 网站:~2 分钟
- 虚拟机:30 秒
冷电话:
部署/启动应用程序并让它在第二天拨打电话。
- Azure 网站:31119 毫秒
- 虚拟机:219 毫秒
后续调用:
在冷调用之后直接调用,但到另一个端点。
- Azure 网站:2685 毫秒
- 虚拟机:223 毫秒
我的问题是: 有谁知道运行托管在 azure 网站上的 spring boot fat jars 是否可行? 由于有来自 Microsoft 的官方文档,人们会认为它是,当然在技术上它是,但它在生产中是否可行?
我并没有真正讨论过 AWS、Azure 和 Google App Engine ....., 或编写战争/罐子或如何托管它。
我有理由这样想。如果不可能,我还有其他选择,但想先探索一下这个想法,看看是否有其他人有更好的经验?
编辑:只是为了添加信息。所有调用的数据库都是空的。因此,这不应该增加任何开销。没有数据实际上是只获取空列表。
【问题讨论】:
-
Azure 应用服务 (PaaS) 与属于不同类型 Azure 服务的 Azure 虚拟机 (IaaS) 比较没有正确答案。由于MS选择不同的硬件和软件来构建这些服务,我认为在相同的硬件和软件下不进行任何测试是没有意义的。请参考链接Azure Pricing了解它们之间的区别。
-
@Peter Pan 不,这不是一个“公平”的比较。但他们之间的比较并不是真正的问题。进行比较是为了提示在“类似情况”下的调用时间应该是多少。与运行 azure 网站的实例相比,我要比较的 VM 在规格上相差不远。如果我这样说:我对应用程序的调用相当简单。 2685ms 对于这种调用来说是一个荒谬的时间。我想在 azure 上运行的 VM 上对其进行测试,看看我是否做错了什么,但 VM 的响应更符合我的预期。
-
@PeterPan 我强调了实际问题的部分,以便更清楚我的要求。
-
@alefr 我有/有相同的用途。我从
azure team得到的答案是,将linuxwebapp 用于opensource比较windows webapp更好。在那里使用容器很容易部署,但对于java,您需要带上自己的custom container。如果您对azure webapp上的 java 速度慢有任何其他解决方案,请分享:) -
@oak 这很有趣。我没有听说过带有容器的 Webapp(我们从 webapps 转移到其他套件)。我们今天通常将我们的应用程序/服务打包在一个 docker 容器中,对于其中一些容器来说,这似乎是一个很好的匹配。考虑到这看起来值得探索的时间。
标签: spring-mvc spring-boot azure-web-app-service