.net后台开多个线程对网站性能的影响?

2019-06-24 15:01发布

后台需要调用多个不同的api获取数据,想采用多线程的方式,同时获取,以提高效率。有点担心在访问量大的时候,服务器会遭不住,问下有这方面经验的大神,这个解决方案靠谱么?还有其他更好地解决方案么!

标签: 多线程
5条回答
仙女界的扛把子
2楼-- · 2019-06-24 15:28

应该用任务(Task)去做,由系统为你处理异步问题,而不是自己去管理线程。

即使用线程,也应该开固定数量的线程,保存到Application里,由你管理任务队列,分配任务。

 

如果你无法确定你的线程什么时候关闭,又无法确定有多少这样的请求,那你这是浪费资源,问题也是不可预知的。

 

就我的认知,如果你在一个HttpRequest中发起新线程,并且还要等待结果的话,那你这是多余的,因为asp.net本身就是多并发的,根本不在乎你这个请求阻塞,你可以尽情地阻塞这个请求。

查看更多
We Are One
3楼-- · 2019-06-24 15:30

最好做下评估,比如每秒可能会有多少请求及这种请求如果要并行需要耗时多少。

1.如果请求数不大,那么你直接丢线程池去处理就完了。

2.请求数较大,那么你可以将任务发到后续服务单独处理。

3.请求数很大,那么你可以将任务发送到队列,由后续服务来处理。

不太建议你直接开启一定量的线程去处理数量未知的任务,这样可能会导致资源得不到充分利用甚至更糟的请求积压。

查看更多
倾城 Initia
4楼-- · 2019-06-24 15:34

这个方案靠谱,异步io能提高不少吞吐量。

查看更多
在下西门庆
5楼-- · 2019-06-24 15:35

担心API扛不住?

查看更多
该账号已被封号
6楼-- · 2019-06-24 15:44

高并发情况下只能这么做,fork 线程,由OS来控制线程;一般CPU不是问题,有问题的是内存和Disk IO

查看更多
登录 后发表回答