【问题标题】:ASP.NET Web app with large amount of threads, most efficient method具有大量线程的 ASP.NET Web 应用程序,最有效的方法
【发布时间】:2012-01-13 20:59:18
【问题描述】:

我有一个网络应用程序,它允许您在其中粘贴大量 url(从 2000 到 15000),然后它会访问每个页面以下载源代码并进行一些处理。

我尝试了几种方法,目前它使用 ajax 一次将每个 url 发送到 WebMethod,然后使用 ThreadPool.QueueUserWorkItem 将请求推送到队列并在可能的情况下进行处理,以便许多线程正在同时运行。这似乎会导致问题(Visual Studio Web 服务器偶尔会死机,这不好)。

只是想知道是否有人做过类似的事情,知道更好的方法。我想能够以某种方式限制并发线程的数量会有所帮助。

谢谢

【问题讨论】:

  • Cassini 不适合处理这种负载。你应该把它用于它的用途。

标签: asp.net multithreading


【解决方案1】:

不要使用内置的网络服务器。正确使用 IIS

【讨论】:

  • 我打算改变它(仍然会),但认为它可能更多地与它一次性完成的工作量有关,而不是网络服务器?
  • 我猜它是网络服务器....检查一下developer.com/net/… 尝试使用 IIS7.5 Express 进行设置并尝试它相对容易。还有它在做什么处理?如果您正在做多线程的事情,也许您遇到了死锁等问题,不确定您对该主题了解多少或者您正在做什么,这是一个链接msdn.microsoft.com/en-us/magazine/cc163618.aspx
【解决方案2】:

除了使用上面提到的 IIS,您还可以从使用异步 Web 请求中受益。 (有关更多信息,请参阅How to use HttpWebRequest (.NET) asynchronously?。)

这将防止在每个线程上完成的阻塞量,如果您的处理不太繁重,这应该会减少所需的线程数。

【讨论】:

    猜你喜欢
    • 2013-08-08
    • 1970-01-01
    • 1970-01-01
    • 2013-10-06
    • 1970-01-01
    • 2021-10-20
    • 2023-03-31
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多