【问题标题】:ASP.NET webAPI Framework Slowness issueASP.NET webAPI 框架缓慢问题
【发布时间】:2020-07-11 15:16:21
【问题描述】:

我已经使用 ASP.NET WebAPI 框架实现了一个 Web 服务。

在部署到服务器的本地系统(目标 framework4.5)中,响应时间更快。

部署到 Windows2012R2 IIS8.5 后,每个请求大约需要 30 秒的响应时间。我已经尝试了示例 Web 服务,但没有从数据库中检索任何数据。这也需要更长的时间。我安装了 Fiddler,发现 TTFB 大约需要 26 秒。

我使用这个 url 创建了 web 服务:

https://www.c-sharpcorner.com/article/create-simple-web-api-in-asp-net-mvc/

即使显示“欢迎”消息本身也需要大约 30 秒。 关于在哪里调查性能问题有什么想法吗? 这是 URL 中的示例代码

namespace Demo1.Controllers
{
    [System.Web.Mvc.SessionState(System.Web.SessionState.SessionStateBehavior.Disabled)]
    public class DemoController : ApiController
    { 
     public string Get()
        {
            return "Welcome To PARIS Web API";
        }
        public List<string> Get(int Id)
        {
            return new List<string> {
                "Data1",
                "Data2"
            };
        }

} }

【问题讨论】:

  • 你能提供一些示例代码吗?这可能不是代码问题,但提供更多详细信息会有所帮助。
  • @Nata 请编辑您的帖子并将代码放入其中。不要使用 cmets 编写代码。
  • 你部署到服务器了吗?您还部署到 IIS 吗?还是你在使用容器?

标签: asp.net webapi


【解决方案1】:

编译代码在两个不同服务器上的性能几乎总是与代码运行时可用的物理资源有关。

请记住,作为开发人员,我们通常在具有比我们部署到的服务器更好的规格的 PC 上编写代码!

对于 API 部署,通常部署到 CPU 或核心数量减少的云或最小服务器,或者您部署的应用程序可用的资源受到限制,以允许服务器运行多个应用程序。

  • 有时为了降低成本,我们将部署到具有我们认为应用所需资源的服务器上,而没有记住该服务器的操作系统将具有需要满足的基本要求。

您已经隔离了有关已部署服务器和数据库之间可用带宽的问题,对于其他投注者请记住这是一个潜在的瓶颈,请让您的数据库靠近您的 API。 p>

如果对一个简单站点的每个请求都很慢,请检查慢速服务器上的日志,查找错误或启动缓慢的迹象,或者应用是否针对每个请求重新启动。这很常见,我们接受网络应用程序的缓慢冷启动,但网络应用程序应在请求之间保持活动状态,即使它的会话/状态较少。

了解您是部署到物理服务器、虚拟机、云应用程序服务还是容器主机,服务器是在云中还是在地面上,以及您是否知道服务器的一般可用带宽,这将有所帮助?

只是吐口水,这是一个旧的 .Net gotchya:检查您的服务器或防火墙是否没有阻止 出站 互联网呼叫!
由于 .Net 中尝试执行 SSL 证书撤销检查的低级别调用,您的代码可能会在启动时等待尝试进行外部调用。 This post discussed options to disable that. Something to try if all else fails.

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-08-22
    • 1970-01-01
    • 2019-01-08
    • 2011-03-29
    • 1970-01-01
    • 2013-07-03
    • 1970-01-01
    相关资源
    最近更新 更多