【问题标题】:First Call to Web API is very slow C#第一次调用 Web API 非常慢 C#
【发布时间】:2023-03-13 20:47:01
【问题描述】:

我的 Asp.Net WebApi 托管在 Godaddy windows 共享主机上。

当我从不同的设备/机器访问我的 api 时,第一次请求大约需要 30 秒;之后,它就可以正常工作了。

有什么问题?我可以让我的 web api 一直运行吗?如果是这样,怎么做? 我使用了实体框架代码优先方法。每次我从我的网站调用这个 api 时都会遇到这个问题:

Rs Travels - 去假期,点击国内,看看web api的慢。

有什么方法可以提高 web api 的性能?

【问题讨论】:

  • entity framework warmupweb api warmup 上搜索。不过,您必须先隔离问题,这可能是多种因素的组合。
  • 谷歌应用池回收。
  • 您是否尝试过调试和/或检查诊断工具的结果?
  • 补充上面的cmets(从iis知道,但不同的平台会有类似的行为):iis在不使用的特定时间后将其应用程序池置于睡眠状态。所以你的第一个请求会再次唤醒它。
  • @nilsK ,我该如何解决这个问题?实际上这些东西对我来说是新的。请为此提供一些演示链接以提供帮助。

标签: c# asp.net-web-api2


【解决方案1】:

如果不经常使用API​​,第一次请求就需要时间,一般重启IIS也是一样,需要预热。

在内部,我们有一个自定义的健康检查系统,它调用特定的 URL 来监控它们,但因此,它也让服务保持活跃。

您也可以通过在本地创建一个 Windows 调度程序任务来相当简单地做到这一点,或者在任何简单地定期调用 API 的服务器上。最好实现一个特定的 Monitor 方法来执行任何其他可能相关的保活。

试试这个Open Website from windows scheduler

【讨论】:

    【解决方案2】:

    更改它会有点困难,因为您不拥有 Web 服务器(以及它的池)。您可以尝试在真正需要它之前调用 api(想象一下启动画面)。然后它会在你真正需要它的时候准备好。当然,如果从您调用 API 的初始页面开始,这将不起作用...

    【讨论】:

    • 我该如何实现这个,请给我任何博客链接,它会很棒。
    【解决方案3】:

    这对我有用!

    https://stackoverflow.com/a/9474978/6426192

     static Thread keepAliveThread = new Thread(KeepAlive);
    
        protected void Application_Start()
        {
            keepAliveThread.Start();
        }
    
        protected void Application_End()
        {
            keepAliveThread.Abort();
        }
    
        static void KeepAlive()
        {
            while (true)
            {
                WebRequest req = WebRequest.Create("http://www.mywebsite.com/DummyPage.aspx");
                req.GetResponse();
                try
                {
                    Thread.Sleep(60000);
                }
                catch (ThreadAbortException)
                {
                    break;
                }
            }
        }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-02-01
      • 1970-01-01
      • 2014-02-15
      • 2013-07-08
      • 2012-02-17
      • 2017-04-23
      • 2017-01-24
      • 1970-01-01
      相关资源
      最近更新 更多