在我的网站中,我使用线程执行从网站下载CSV并将数据解析到数据库的功能。
现在,如果我无法阻止该线程,那么可能会对性能产生什么影响呢?
此外,如果我在不知不觉中启动另一个主题,那么它会影响我的网站的性能吗?
感谢。
答案 0 :(得分:2)
线程是否作为用户交互的一部分被触发?如果没有,那么最好在网站外部运行,比如通过Windows调度程序。
IIS使用线程为入站请求提供服务。因此,启动大量线程可能会影响IIS处理新请求的能力。这篇文章可能有所帮助
如果您正在回复用户输入,那么您不会真正打乱您的网站。网站往往比CPU绑定更多的内存限制,因此CPU通常可以处理一些额外的线程。
西蒙
答案 1 :(得分:1)
作为一个结构的线程在没有做任何事情(约1MB内存)时影响有限,但它确实会产生影响:
您的主题在与您的网站相同的硬件上运行,因此它将占用一部分资源。如果你有很多核心,那么一个繁忙的线程不应该导致太多问题,除非你有一个非常繁忙的网站。更可能的问题是你的线程正在锤击磁盘驱动器。这种资源往往不太适合并发繁重的访问。如果您的网站不需要磁盘访问,那么这不是一个问题。
如果你的帖子偶尔会下载一个CSV文件并将其粉碎到数据库中,那么与你的网站同时运行应该没有问题。
答案 2 :(得分:0)
如果您正在使用ThreadPool创建工作项,那么这将直接带走一个线程,否则该线程将用于为您的网站提供请求,使用Thread直接不会影响您的网站服务请求的能力,但是吃掉cpu或io的很多线程都会降低你网站的响应能力。您正在寻找的是最佳点,您可以从中获得多线程的好处,而无需为您的网站提供足够的资源来响应请求。