ASP.NET程序中使用多线程,在客户端多的情况下会耗尽服务器资源?

chen6191 2011-04-30 01:41:41
公司有一ASP.NET程序,其中有个场景是点击一个按钮时循环处理大概300个操作,然后返回处理结果给客户端。客户使用后抱怨太慢,需要大概30秒的时间。
目前的处理方式:这300个操作用一个循环处理,也就是一个接一个的处理,每个操作处理方式类似。
每个操作的的大概过程如下,首先从sqlserver数据库中查询取得数据,然后加工处理数据,再更新数据库,每个操作大概涉及十几条sql语句,用时大概0.1秒。

我想把这300个操作改成使用多线程的方式并发处理以降低总的处理时间,但项目组的人员说开的线程太多会浪费系统资源,说如果有5个客户端同时使用的话,服务器就是开1500个线程,会耗尽服务器资源。

请问大家是这样的吗?多线程会耗尽系统资源????

系统环境(ASP.NET+sqlserver2008,同时使用的客户端大概5个)
...全文
102 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
机器人 2011-04-30
  • 打赏
  • 举报
回复
最理想的是1500个线程。但不可能,线程开始还有先后。你线程执行时间才0.1s
可能第1个线程已经结束了,第101个还没开始呢。

你要是做个300个线程,每个线程10分钟的执行时间,那服务端可能同时存在1500个线程。
chen6191 2011-04-30
  • 打赏
  • 举报
回复
回复3楼,
这300个操作就是查询更新数据库处理数据,每个操作大概有10几条sql语句,循环处理300个操作相当于总共处理了大概3000条sql语句,耗时大概30秒。
chen6191 2011-04-30
  • 打赏
  • 举报
回复
谢谢楼上的回答。
另外我想问下,假定目前有5个客户端,如果每个客户端同时点击页面上的事件按钮(此事件开多线程300),
相当于服务器上同时存在1500个线程吗?
ycproc 2011-04-30
  • 打赏
  • 举报
回复
不知道你的300个操作具体指的什么

我们做GPS数据解析的操作也在几百个

VS2010 + Oracle 11g 测试用时0.01-0.13

要么就是代码有问题

曾经我在某一个细节上的 疏忽这个程序在2-6秒

后来不断的优化 在能0.01-0.13
机器人 2011-04-30
  • 打赏
  • 举报
回复
另外300个操作不表示你需要300个线程。线程过多由于资源竞争,加锁同步管理等处理反而会使处理性能下降。
一个操作0.1秒,用5-6个线程应该就够了,这个需要实际调试。
机器人 2011-04-30
  • 打赏
  • 举报
回复
服务端可以设立线程池,另外Connection自己也有连接池,你也应该稍微扩大点。否则线程再多,connection不够也是在等待。

62,046

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧