有多少页我可以在一个小时内爬行使用多线程c#编程与sql server
本文关键字:多线程 爬行 编程 server sql 小时 我可以 多少 一个 | 更新日期: 2023-09-27 18:11:28
我有一个项目,这是关于爬行一个电子商务网站,有近15000个产品,我不能计数,但近25000页。我用c#用多线程写了一个程序,总共用了20个线程。但是当我只使用5个线程时,没有高性能。我想错了吗?不能在爬行时增加吗?
我测试了我抓取了500个页面,并在10分钟内将它们的html放到db中。这正常吗?或者我可以增加它吗?
此外,SQL server是ok的20线程并发插入,更新操作,但当我增加线程数到100线程,我将面临一个问题吗?
我计算整个站点进程将需要5个小时,10个线程。我需要帮助来减少月经。或者这是正常的…我不想再用电脑了……
我的电脑细节是2 GB RAM, 1.87 GHz英特尔t2130…
我检查了我的CPU是%90,我从互联网上抓取网站,我的ram是%75,当程序运行时,每秒我需要70 kb/秒。如何提高爬行速度
你面临的最大问题不是你的环境,而是如果你爬得太快,其他网站会阻止你。
如果你的sql server不能处理,你总是可以先写html文件,然后,按照你自己的节奏,把它导入到DB中。如果发现html发生了变化,你还可以选择修改你的爬行代码。
强烈建议:不要在高速下爬行,这会给其他网站带来麻烦。
你是在网上爬网站吗?如果是,你的网络连接有多快?检查任务管理器。如果您的CPU已经满了,那么您需要一台更快的机器,或者使解析页面的算法更有效。如果您的CPU不工作,您可能需要更快的连接。此外,如果你是在互联网上爬网站,我相信有一个请求的最大数量限制到一个域,(我认为)是默认设置为2,但这可以改变。此外,如果这不是你的网站,确保你遵守robots.txt文件,以确保他们不会阻止你。也许网站本身因为检测到的流量过大而限制了你的访问。
将线程数增加到逻辑核数以上没有多大意义。如果有4个线程正在工作,而其他96个线程正在排队,您将看不到任何好处。
另外,您应该分析一下实际的瓶颈在哪里。如果每个页面上要处理的数据很少,网络延迟可能比原始处理更重要。分析也可能显示你的算法需要改进。
所以忘记无限地增加你的线程和配置文件。例如,EQATEC提供了一个免费的。net分析器。