tcp多线程的奇怪问题

wyljz 2012-12-14 12:28:02
碰上个奇怪的问题,我开多线程访问网络,线程数在500以下时,一切正常,超过500时,浏览器就打不开网页了,线程停止后,就又正常了,这是怎么回事?DNS对这个线程数量有什么样的限制?
...全文
226 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
showjim 2012-12-19
  • 打赏
  • 举报
回复
如果是同域访问有问题的话,试试把ServicePointManager.DefaultConnectionLimit设置得大一点,比如1000
stonespace 2012-12-15
  • 打赏
  • 举报
回复
好像没有,以前bt软件都有个补丁,能够增加tcp连接数,
引用 3 楼 wyljz 的回复:
有没办法解决?
  • 打赏
  • 举报
回复
以前我们做IM时有过一次经历,一个“非正式招聘”的所谓员工(一个认识的教授推荐来的“好”学生)很扯淡地私自(未经过产品经理测试的代码原本都毫不留情地删除掉)在前端程序中加入了一个Timer,Interval为50毫秒,里边就是检测IM窗口跟屏幕的相对位置并处理窗口自动伸缩的功能。结果这个程序的运行速度就立刻变成垃圾一样。好容易我们发动群众找了3天,才找到这个东西。让别人花20分钟重新写了,才解决问题。 你的所谓“500个线程”中有一两个有问题就会让系统卡死,根本不可能胡乱地把问题归咎于什么线程数量上。
  • 打赏
  • 举报
回复
凭你的描述很难给个定量的说法。开10000个线程也没有事,但是可能开5个线程系统就卡死了,这是需要了解你的线程所执行的方法才能知道了。
wyljz 2012-12-15
  • 打赏
  • 举报
回复
楼上的说法有道理,不过我的每个socket线程都是设置有超时的异步连接,只连接,不传数据,超过2秒自动关掉了,也就是每个线程的执行时间只是2秒中,过了后不管结果怎样就中止,使用的是线程池,这两天测试,在开350个线程时,浏览器上网一点不受影响,再多就很不稳定,超过500个时,浏览器出现超时错误,打不开网页,有时提示DNS错误,程序一中止,马上恢复正常。 前端也加有timer,这个timer的作用只是更改窗口的一个label数据。 程序的运行速度很快,cpu和内存占用的都不多,除了这个上网的问题外,没有其他问题。
stonespace 2012-12-14
  • 打赏
  • 举报
回复
是操作系统的限制,很多操作系统都限制网络连接数,
wyljz 2012-12-14
  • 打赏
  • 举报
回复
有没办法解决?
winner2050 2012-12-14
  • 打赏
  • 举报
回复
这个是 基本的安全防御。

110,577

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

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