第一次请求时,Azure App Service速度很慢

时间:2016-04-05 09:59:09

标签: java spring azure tomcat web-config

我创建了一个在Azure上托管的API。 API使用Java和Spring Framework构建。一切正常,除了每天早上的第一个请求,这似乎需要超过1分钟的时间来处理。我已将服务器配置为"始终开启"但这似乎没有任何效果。我知道瓶颈是应用程序服务器,因为即使是没有数据库调用的简单http请求也需要至少1分钟才能处理。我使用了免费试用结算方案,这会影响"永远在线"特征?如果不是,导致这种缓慢负载的原因是什么?

2 个答案:

答案 0 :(得分:0)

ALWAYS ON功能只能在基本或标准定价层中启用。因此,如果您使用了免费试用结算方案,则会禁用always on功能的选项。但是,您可以尝试不断ping您的Azure应用服务以使其保持活动状态。

有关详细信息,请参阅博客http://wp.sjkp.dk/windows-azure-websites-and-cloud-services-slow-on-first-request/

答案 1 :(得分:0)

我们遇到了类似的问题,即在一些空闲时间之后,应用程序已卸载并且必须重新启动,尽管已启用始终开启

我们联系了Azure应用服务支持以解决此问题。在我们的案例中,web.config中的从http到https 的永久重定向导致了此问题(似乎存在 Always On 无法与Tomcat网络应用一起使用的情况与重写规则相结合)。

可以通过为重定向添加AlwaysOn豁免来解决此问题。您将在下面找到Azure支持工程师提出的更新web.config

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
    <system.webServer>
        <rewrite>
            <rules>
                <rule name="redirect HTTP to HTTPS" enabled="true" stopProcessing="true" lockItem="true">
                    <match url="(.*)" />
                    <conditions>
                        <add input="{HTTPS}" pattern="off" ignoreCase="true" />
                        <add input="{HTTP_USER_AGENT}" pattern="AlwaysOn" ignoreCase="true" negate="true" />
                    </conditions>
                    <action type="Redirect" url="https://{HTTP_HOST}/{R:1}" appendQueryString="true" redirectType="Permanent" />
                </rule>
            </rules>
        </rewrite>
    </system.webServer>
</configuration>