【问题标题】:Is frequent polling going to create problems on an ASP.Net page频繁轮询是否会在 ASP.Net 页面上产生问题
【发布时间】:2014-09-25 07:33:45
【问题描述】:

我有一个 ASP.Net 页面,它通过从 JavaScript 调用 Web 服务方法每 5 秒轮询一个名为“Progress”的会话变量,如下面的代码所示。此轮询在单击某个按钮后开始,该按钮在客户端的单击事件是“ButtonClick”,即使在此处显示的 JavaScript 代码中也是如此。

我的问题是:由于 ASP.Net 的线程池大小有限,当许多用户使用此 ASP.Net 页面时,如此频繁的轮询会导致较低的吞吐量和请求超时吗?

用于轮询的 Web 服务方法

  [WebMethod(EnableSession = true)]
  public string GetProgress()
    {
        System.Web.HttpContext currentContext = System.Web.HttpContext.Current;
         if (currentContext.Session["Progress"] != null)
            {
                return currentContext.Session["Progress"].ToString() ;
            }

        return string.Empty;
    }

用于轮询的 JavaScript 用于从 ASP.Net 页面调用上述 Web 服务方法

   function ButtonClick() {
      StartProgressPoll();
    }

   function StartProgressPoll() {
              t = setInterval(GetOpProgress, 5000);
          }

   function GetOpProgress() {
            WebApplication1.WebService1.GetProgress(Success, Failure);
        }

【问题讨论】:

  • 您如何定义“许多”用户?但无论如何,如果您的网站已经设计为处理您的正常页面流量,我无法想象每 5 秒的微小请求会导致很多问题。
  • 如果不了解背后的架构就无法判断。但这就是负载测试的目的,尝试您的代码,使用您的架构,检查它何时减慢/中断。互联网上的人给你的答案比你能做的测试更准确。
  • @JoeEnos,对于许多用户,我的意思是大约有 50 个用户使用该页面并单击该按钮。但你是对的,Web 服务方法是一个非常快速的调用,因为它只读取会话变量。
  • 只有 50 个用户,如果您有任何一种中等体面的硬件和网络,应该不会有任何资源问题。 100 倍的流量应该没问题。
  • @Pierre-LucPineault,是的,你是对的。我需要加载测试我的页面。

标签: c# javascript asp.net threadpool polling


【解决方案1】:

来自我的cmets:

如果您的网站已经设计为处理正常的页面流量,我无法想象每 5 秒发出一个微小的请求会导致很多问题。

只有 50 个用户,如果您有任何一种中等体面的硬件和网络,那么根本不会出现任何资源问题。 100 倍的流量应该没问题。

【讨论】:

    猜你喜欢
    • 2020-04-19
    • 2020-01-12
    • 2011-04-18
    • 1970-01-01
    • 2011-07-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多