问题描述
- 如何突破TCP连接数瓶颈
-
目前情况:
本人普通i5内存8G的PC用多线程同时向10万个不同IP的主机发起httprequest请求,超时时间设置为5秒,用线程池技术,总线程保持在5000个,目前只能收到每秒300个左右的request回复,CPU已经100%,内存没满,占用4G,windows7操作系统界面已经卡住不能动了,但程序还能正常跑
,此时用360网络监控程序发现,上传速度和下载速度都保持在几KB,很小很小,我的带宽是100M光纤,也就是说瓶颈肯定不在带宽上,那瓶颈是不是在CPU上?还是在网卡上?还是我程序问题?我的问题是:
如何突破这每秒只有300左右回复的瓶颈,按理论速度应该是5000个线程/5秒=1000个回复/s,是不是只能增加CPU配置换个i7的16核心的或者还有其他什么办法?
解决方案
i5的cpu是 双核四线程么? 那也就是 同时只能有4个线程在跑。。
线程上下文切换很费资源,你10万个线程造成线程频繁的切换上下文。你可以尝试缩少线程试试。找到一个最佳的平衡点。
解决方案二:
我描述的让你有点误解,其实不是同时开10个线程,是同时保持5000个线程,用线程池技术,10个IP主机是总量,我试过5000个线程速度也是300每秒,线程再开多,速度不升反降,所以肯定是哪里出现了瓶颈
解决方案三:
我描述的让你有点误解,其实不是同时开10万个线程,是同时保持5000个线程,用线程池技术,10个IP主机是总量,我试过5000个线程速度也是300每秒,线程再开多,速度不升反降,所以肯定是哪里出现了瓶颈
时间: 2024-10-08 10:42:26