我目前正在用java编写一个爬虫程序,而且我被某些东西困住了。
在我的抓取工具中,我有线程使用HttpURLConnection
下载静态远程页面。
我试着下载一个带有不同参数的小文件(2kb)。连接的超时设置为1秒。
我注意到,如果我使用100个线程进行下载,我每秒发出3次请求(每秒约10k请求,使用),而当使用500个线程时,我成功制作“仅”4k每秒请求。
我原本希望每秒能够执行至少与100个线程一样多的请求。
你能解释一下,为什么这样做会这样,并且如果有某些参数可以激活某处以增加最大并行连接数?
谢谢:)
答案 0 :(得分:1)
我认为这只是你的cpu的问题,在某个时刻,切换威胁比不等待单个连接所花费的时间更贵。
我会尝试通过设置上限来最大化parralel连接