有没有办法确定理想的线程数?

Ren*_*ani 6 java performance multithreading metric

我正在做一个webcrawler并使用线程下载页面.

我的程序性能的第一个限制因素是带宽,我永远无法下载它可以获得的更多页面.

第二件事是我感兴趣的.我正在使用线程同时下载许多页面,但是当我创建更多线程时,会发生更多的处理器共享.是否有一些度量/方式/类测试来确定什么是理想的线程数,或者如果在一定数量之后,性能不会改变或减少?

Gro*_*eek 0

我们开发了一个多线程并行网络爬虫。对吞吐量进行基准测试是了解这头野兽如何处理其工作的最佳方式。对于专用的 java 服务器,每个核心一个线程是启动的基础,然后 I/O 开始发挥作用并发生变化。

在一定数量的线程之后,性能确实会下降。但这也取决于您抓取的网站、您使用的操作系统等。尝试找到一个响应时间恒定的网站来进行您的第一个基准测试(例如Google,但采用不同的服务)

对于速度较慢的网站,更多的线程数往往可以补偿 I/O 阻塞