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

  在我们写爬虫的时候,首先会想到开多线程,如果使用的语言是Python,很不幸,因为Python存在  GIL,在任何时候,CPU内只有一条进程在运行,所以Python的多线程并不能大大的提高爬虫的速度,只能部分提高爬取效率,为何呢?因为爬虫是偏向于io的,需要用到CPU的只是解析的时候。网络请求需要等待敌方服务器,往自己数据库插入数据需要等待自己的服务器io。有没有一个好的方法实现爬虫的并发下载呢?

  答案是 : 有,我们可以使用第三方的框架,比如使用异步框架 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万左右个网页数据。

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

  

爬虫对自己服务器 CPU,内存和网速的影响的更多相关文章

  1. python glances来监控linux服务器CPU 内存 IO使用

    什么是 Glances? Glances 是一个由 Python 编写,使用 psutil 库来从系统抓取信息的基于 curses 开发的跨平台命令行系统监视工具. 通过 Glances,我们可以监视 ...

  2. Ubuntu 14.04 标题栏实时显示上下行网速、CPU及内存使用情况

    首先当然是用wget下载indicator-sysmonitor,终端执行命令:wget -c https://launchpad.net/indicator-sysmonitor/trunk/4.0 ...

  3. ubuntu14.04标题栏显示上下网速

    首先当然是用 wget 下载 indicator-sysmonitor,终端执行命令: wget -c https://launchpad.net/indicator-sysmonitor/trunk ...

  4. C#实现对远程服务器的内存和CPU监控

    C#实现对远程服务器的内存和CPU监控小记 1.  主要使用到的组件有System.Management.dll 2.  主要类为 :ManagementScope 连接远程服务器示例代码: priv ...

  5. Ubuntu 16.04 标题栏实时显示上下行网速、CPU及内存使用率--indicator-sysmonitor

    ---------------------------------------------------------------------------- 原文地址:http://blog.csdn.N ...

  6. 在Ubuntu 11.10工具栏上用数字显示网速、CPU负荷和内存占用量『译』

    基本上照抄了<How To Display Network Upload / Download Speed On The Panel In Ubuntu 11.04>,只不过我的实践环境是 ...

  7. Linux入门(17)——Ubuntu16.04显示内存CPU网速等(System Monitor)

    终端查看内存状况有两个命令 top htop 如果系统没有安装htop的话,那就安装一下. 然而这样比较麻烦,System Monitor是个不错的选择,System Monitor可以显示网速,内存 ...

  8. ubuntu实时显示网速cpu占用和内存占用率

    ubuntu实时显示网速cpu占用和内存占用率 大家在使用ubuntu的时候,有没有想让它实时显示网速,内存占用率,或者cpu占用率呢?现在我就教大家怎么实现,就像下面这样 1. 添加indicato ...

  9. 服务器CPU繁忙或内存压力引起网络掉包的浅析与总结

      最近一段时间遇到了两起有意思的故障,现象都是网络掉包或网络断开,不过这些只是表面现象,引起现象出现的本质才是我们需要关注的重点: 案例1: 平台   :VMware平台 操作系统 :Windows ...

随机推荐

  1. 堆优化dijstra

    因为spfa没事就被卡一卡,所以堆优化dijstra就显得很重要,在最短路或者其模型里边,最少有一条边是没有被更新过的,也就是它是最短的,同理从这个点开始也有一条边最短,所以每次就找最短的然后松弛操作 ...

  2. Spring AOP 切面编程实战Demo项目

    为什么会有此项目?在某日,我看博客时,看到了讲面向切面编程的内容,之前也知道spring是面向切面编程的,只是自己没有写过相关的代码,于是决定自己写一个test.但是url拦截器从外部看,和AOP有相 ...

  3. Spring:获取容器中的Bean

    某些情况下我们要获取 IOC 容器中指定注解.类型.名字的 Bean 要获取 IOC 容器中指定条件的 Bean 可以通过 ApplicationContext 相应的方法 @Autowired pr ...

  4. C#循环语句整理

    for.while.do while和switch暂时没发现与c++的不同,这里只整理foreach. foreach foreach的作用是遍历集合中的所有元素.foreach语句中的表达式由关键字 ...

  5. Java性能调优zz

    写Java也有n年了,现在还是有不少的坏的代码习惯,也通过学习别人的代码学到了不少好的习惯.这篇文章主要是整理的资料.留给自己做个警戒,提示以后写代码的时候注意!在文章的后面,会提供整理的原材料下载. ...

  6. TF-IDF算法解释

    http://www.ruanyifeng.com/blog/2013/03/tf-idf.html

  7. javascript事件绑定和普通事件的区别

    <!doctype html><html lang="en"><head> <meta charset="UTF-8" ...

  8. sql关于对一个字段同时满足多条件判断来筛选查询

    表所有数据 查询userName为abc或xyz的 以下为本菜鸟项目中遇到的问题: 背景: /**  * wangjie 180629  *   * 学生需要查询四种可能的消息  * 1.班级管理员发 ...

  9. 浅谈KMP“串”的模式匹配问题

    感悟:预处理next[ ]数组求解B串的"自我匹配过程",思路与KMP类似,目标得到最大相同的前缀.后缀. ([1->k]==[i-k+1,i]),可以根据由前往后,利用前面 ...

  10. 快速学习MarkDown语法及MarkDown拓展语法

    使用Markdown编辑器写博客 前半部分为效果后半部分为markdown格式,推荐开起两个窗口对比阅读 Markdown和扩展Markdown简洁的语法 代码块高亮 图片链接和图片上传 LaTex数 ...