ale*_*efr 5 spring-mvc spring-boot azure-web-app-service
我有一个构建为 spring boot fat jar 的应用程序。我根据“官方”文档将它托管在 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>
Run Code Online (Sandbox Code Playgroud)
该应用程序在结构上是整体的,不是太大,但做了一些映射并有一些层要初始化,因此本地启动时间约为 12 秒。它在内存数据库中运行 H2 仅用于测试目的。
实际部署并让它在 azure 网站上运行从来都不是真正的问题,但存在一些真正的性能问题,至少在我的设置中是这样。
一些感兴趣的设置:
为了能够将这些数字与我在具有相似(但不相同)规格和价格范围的 Azure VM 上运行应用程序的内容进行比较,并在该虚拟机上运行应用程序。
以下是部分结果:
部署/启动应用程序并让它在第二天打电话。
在冷呼叫之后直接呼叫,但到另一个端点。
我的问题是: 有谁知道在 azure 网站上运行 spring boot fat jars 是否可行?由于有来自 Microsoft 的官方文档,人们会认为它是,当然在技术上是这样,但它在生产中是否可行?
我并不是真的在讨论 AWS、Azure 和 Google App Engine 之后......,或者编写战争/罐子或如何托管它。
我有理由想要这样。如果不可能,我有其他选择,但想先探索这个想法,看看其他人是否有更好的经验?
编辑:只是为了添加信息。所有调用的数据库都是空的。所以这不应该增加任何开销来说话。没有数据实际上只获取空列表。
虽然这是一个老问题,而且我的回答也没什么价值,因为我对Azure一无所知,但我想分享我的研究成果。我有几个 Spring Boot 微服务和一个相对较大的服务(170 MB fat jar,在我的本地计算机上启动大约 70 秒)。Azure 在数十(如果不是数百)秒内启动小型微服务...我的意思是像非常小的微服务(来自 Spring Cloud 等的配置服务器的示例...那里没有什么花哨的事情)。如果涉及到大问题 - Azure 会启动它,并在 2 分钟后......再次启动......然后再一次......再一次。结果它永远无法启动。
这一切都在 B3 应用服务计划中。这么大的计划。
总结一下,在我(非常主观的)看来,Azure 对于 Java 应用程序来说不是一个可行的选择。
| 归档时间: |
|
| 查看次数: |
1588 次 |
| 最近记录: |