zoukankan      html  css  js  c++  java
  • 爬虫对自己服务器 CPU,内存和网速的影响

    今天无事写一遍关于爬虫对计算机的影响,主要是给小白同学普及一下爬虫的基础知识。

      在我们写爬虫的时候,首先会想到开多线程,如果使用的语言是Python,很不幸,因为Python存在  GIL,在任何时候,CPU内只有一条线程在运行,但是Python的多线程也能提高爬虫的速度,并且我们用python的多线程去写爬虫的时候,速度并不慢,这是为何呢?因为爬虫是偏向于io的,网络IO和磁盘io是爬虫的最大瓶颈,现在CPU的处理速度很快,相对于请求来说,CPU的速度更快。网络请求需要等待对方服务器的响应,这个过程比较慢。而下载到数据后往自己数据库插入数据需要等待自己的磁盘响应。那么有没有一个更好的方法实现爬虫的并发下载呢?

      答案是 : 有,我们可以使用第三方的框架,比如使用异步框架 gevent,tornado等,或者是Python的多进程+ 异步方法,可以大大的提高我们的下载速度。

      

      直接粘贴两张图片,第一种是消耗CPU和内存和带宽,第三张图片是多进程使用。

      

                        第一种图片

      

            第二种图片

      在爬取某个网站的时候,同时开启了64个进程,并且是异步的方法,下载速度稳定在700k左右,因为公司运维给网络限速了,不可能提高网速了,然后是内存消耗是87%,内存是12G,CPU消耗是百分之百,CPU消耗为何这么高呢?主要是数据解析需要消耗CPU和进程切换也需要消耗CPU。一个网页的大小应该在10k到20k之间,粗略统计一下,一分钟能下载1750个网页,包括数据的下载,解析和入库整个过程。这个下载速度是1750*60分钟 等于105000,也就是说一个小时是能下载十万个网页。

      这个速度怎么样?我觉得这个下载速度是非常的慢,为何,因为这个网址他封ip了,需要通过代理去访问他们的服务器,这也是非常耗时的一个过程,只能通过ip池去解决,ip池里面维护了1000左右有效ip,并且有专门的服务去做验证,可以随时抽取一个ip去抓取目标网站。理想的状态是一分钟抓取3000条数据,一天24小时抓取500万左右个网页数据。

      小伙伴是不是很惊讶?网络百分之九十的流量都是爬虫给贡献的,爬虫给目标网站造成了不小的压力,为了避免给目标网站造成破坏,不建议开启过多的并发。

      

  • 相关阅读:
    debian7安装oracle11g
    unix fopen和fopen_s用法的比较
    QT的三种协议说明
    Qt之遍历文件夹
    Debian 7 安装配置总结
    用户不在sudoers文件中的解决方法 .
    QT断点续传
    QFtp类参考
    FTP服务器简易有效的访问方法
    Java爬虫搜索原理实现
  • 原文地址:https://www.cnblogs.com/xuchunlin/p/9323756.html
Copyright © 2011-2022 走看看