后台持续运行的线程是否会影响网站的性能?

时间:2011-02-03 13:54:34

标签: .net asp.net multithreading .net-3.5

在我的网站中,我使用线程执行从网站下载CSV并将数据解析到数据库的功能。

现在,如果我无法阻止该线程,那么可能会对性能产生什么影响呢?

此外,如果我在不知不觉中启动另一个主题,那么它会影响我的网站的性能吗?

感谢。

3 个答案:

答案 0 :(得分:2)

线程是否作为用户交互的一部分被触发?如果没有,那么最好在网站外部运行,比如通过Windows调度程序。

IIS使用线程为入站请求提供服务。因此,启动大量线程可能会影响IIS处理新请求的能力。这篇文章可能有所帮助

Threadpool in IIS context

如果您正在回复用户输入,那么您不会真正打乱您的网站。网站往往比CPU绑定更多的内存限制,因此CPU通常可以处理一些额外的线程。

西蒙

答案 1 :(得分:1)

作为一个结构的线程在没有做任何事情(约1MB内存)时影响有限,但它确实会产生影响:

  • 有许多线程,因为操作系统必须在它们之间不断切换。只有这么多线程可以同时运行,所以他们必须轮流。如果有很多线程,那么管理和交换会导致相当大的开销。
  • 线程正在做很多工作,所以他们使用的资源是有争议的,例如CPU和磁盘。

您的主题在与您的网站相同的硬件上运行,因此它将占用一部分资源。如果你有很多核心,那么一个繁忙的线程不应该导致太多问题,除非你有一个非常繁忙的网站。更可能的问题是你的线程正在锤击磁盘驱动器。这种资源往往不太适合并发繁重的访问。如果您的网站不需要磁盘访问,那么这不是一个问题。

如果你的帖子偶尔会下载一个CSV文件并将其粉碎到数据库中,那么与你的网站同时运行应该没有问题。

答案 2 :(得分:0)

如果您正在使用ThreadPool创建工作项,那么这将直接带走一个线程,否则该线程将用于为您的网站提供请求,使用Thread直接不会影响您的网站服务请求的能力,但是吃掉cpu或io的很多线程都会降低你网站的响应能力。您正在寻找的是最佳点,您可以从中获得多线程的好处,而无需为您的网站提供足够的资源来响应请求。