Ste*_*ves 5 c# httpwebrequest task-parallel-library
我正在开发一项新服务,为我们公司的多个Web属性运行QA,并遇到了一个有趣的网络并发问题.为了提高性能,我使用TPL从大量url创建HttpWebRequests,以便它们可以并行运行; 但是,我似乎无法找到过程中的瓶颈所在.
我到目前为止的观察:
可能的痛点:
所以问题是:
显然现在可以在几分钟内下载整个互联网,但我很想知道在这样的场景中瓶颈在哪里以及可以采取什么措施来克服它.
作为旁注,我们目前正在使用第三方服务进行抓取,但我们在某些方面受到限制,并希望获得更大的灵活性.关于企业秘密酱或箭头尖端的毒药 ...... :)
我强烈怀疑以下是其中一个原因:
TPL不保证您有任何最低并行度(DOP).这很遗憾,因为有时你真的需要在使用IO时完全控制并行度.
我建议您手动启动固定数量的线程来执行IO,因为这是保证特定DOP的唯一方法.您需要尝试确切的值.它可以在50到500的范围内.您可以减少线程的默认堆栈大小以节省具有该多个线程的内存.
| 归档时间: |
|
| 查看次数: |
1585 次 |
| 最近记录: |