【问题标题】:windows azure or IIS slow in inital loadwindows azure 或 IIS 初始加载速度慢
【发布时间】:2013-01-17 20:58:05
【问题描述】:

我有一个托管在 Windows Azure 中的简单个人 MVC4 Web 应用程序。

这个网络应用程序使用非常少,特别是当我早上尝试点击时,初始调用非常慢。

我怀疑 IIS 正在休眠,需要唤醒。我发现这篇文章并提到这是 IIS http://social.msdn.microsoft.com/Forums/en-US/wcf/thread/8b3258e7-261c-49a0-888c-0b3e68b2af13 中的一个错误,需要在 IIS 中进行设置,但我的 Web 应用程序托管在 Azure 中,有没有办法在 Web.config 文件中进行某种设置?

所有后续调用都很快。

这是我的个人页面。 javierdelacruz.com

谢谢。

【问题讨论】:

标签: iis azure asp.net-mvc-4


【解决方案1】:

两种选择:

  1. 启动任务
  2. OnStart 代码

有关启动任务,请参阅this link

对于 OnStart 代码,试试这样的函数(这个函数还做了更多的事情):

    private const string _web_app_project_name = "Web";

    public static void SetupDefaultEgConfiguration(int idleTimeoutInMinutes = 1440, int recycleTimeoutInMinutes = 1440, string appPoolName = "My Azure App Pool", bool enableCompression = true)
    {
        if (!RoleEnvironment.IsEmulated)
        {
            Trace.TraceWarning("Changing IIS settings upon role's OnStart. Inputs: ({0}, {1}, {2}, {3}", idleTimeoutInMinutes, recycleTimeoutInMinutes, appPoolName, enableCompression);

            // Tweak IIS Settings
            using (var iisManager = new ServerManager())
            {
                try
                {
                    var roleSite = iisManager.Sites[RoleEnvironment.CurrentRoleInstance.Id + "_" + _web_app_project_name];
                    if (enableCompression)
                    {
                        //================ Enable or disable static/Dynamic compression ===================//
                        var config = roleSite.GetWebConfiguration();
                        var urlCompressionSection = config.GetSection("system.webServer/urlCompression");
                        urlCompressionSection["doStaticCompression"] = true;
                        urlCompressionSection["doDynamicCompression"] = true;
                        Trace.TraceWarning("Changing IIS settings to enable static and dynamic compression");
                    }

                    //================ To change ApplicationPool name ================================//
                    var app = roleSite.Applications.First();
                    app.ApplicationPoolName = appPoolName;

                    //================ To change ApplicationPool Recycle Timeout ================================//
                    var appPool = iisManager.ApplicationPools[app.ApplicationPoolName];
                    appPool.Recycling.PeriodicRestart.Time = new TimeSpan(0, recycleTimeoutInMinutes, 0);

                    //================ idletimeout ====================================================//               
                    var defaultIdleTimeout = iisManager.ApplicationPoolDefaults.ProcessModel.IdleTimeout;
                    var newIdleTimeout = new TimeSpan(0, idleTimeoutInMinutes, 0);
                    if ((int)newIdleTimeout.TotalMinutes != (int)defaultIdleTimeout.TotalMinutes)
                    {
                        appPool.ProcessModel.IdleTimeout = newIdleTimeout;
                    }

                    // Commit the changes done to server manager.
                    iisManager.CommitChanges();
                }
                catch (Exception e)
                {
                    Trace.TraceError("Failure when configuring IIS in Azure: " + e.ToString().Take(63000));
                }
            }
        }
    }

Source and some more details 用于我在此处包含的功能 - 您可能需要一些依赖项来完成此操作。

【讨论】:

    猜你喜欢
    • 2012-11-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-11-17
    • 2018-11-09
    相关资源
    最近更新 更多