爬虫程序的优化
来源:互联网 发布:xml与java 编辑:程序博客网 时间:2024/04/30 08:53
维护人员近期反应我写的爬取某网站数据的程序执行比较慢,看了一下运行爬虫的机器的状态,磁盘IO 100%了,于是想优化一下,减少磁盘IO,关于减少磁盘IO的最容易想到的方法就是内存缓冲区,我原来的程序设计的是每抓一条数据都会插入数据库或者更新数据库对应的数据,由于资源有限,数据库和爬虫程序都放在了一台机器上(更坑爹的是机器还很烂),多个城市的爬虫程序一起执行的话,磁盘的IO明显就捉急了。具体的方案:
用一个LIST数组用来缓冲爬取的数据,暂定缓冲1000条数据(具体应该缓冲多少再一次提交能达到最佳性能这个就需要测试了),缓冲区满了就一次性提交给数据库去处理(拷贝该LIST单独开一个线程去提交数据库同时清除缓冲LIST重新接受新数据?还是在当前线程中提交缓冲LIST给数据库处理等处理完后再清除缓冲LIST继续接受后续数据?前者占用更多的内存但提高了效率,后者则反之,先用后者把。),待数据库处理完后,list.clear()清楚掉缓冲区的数据,准备接受后面的数据。这样1000条数据就出发一次磁盘IO,比原来的每一条数据触发一次磁盘IO的效率应该会高不少。
总结:以前总是会去考虑内存的不足,以后也应该考虑考虑磁盘IO资源的紧张了。
0 0
- 爬虫程序的优化
- Python的爬虫程序
- 简单的爬虫程序
- 网络爬虫:分离生产者和消费者来优化爬虫程序
- crawler4爬虫速度的优化
- spider简单的爬虫程序
- 简单的java爬虫程序
- spider简单的爬虫程序
- 简单的java爬虫程序
- 爬虫程序的学习经历
- 简单的爬虫程序2
- 简单的php爬虫程序
- 简单的Python爬虫程序
- 一个简单的爬虫程序
- 一个简单的爬虫程序
- python简单的爬虫程序
- [python爬虫] 抓取糗事百科的爬虫程序
- 爬虫实战:一个简易 Java 爬虫程序的实现
- 梦想起航公益行动众星加盟 新体操女神张豆豆助梦
- Mars学习笔记
- GridView的功能和用法
- 那些年,我们读过的python!
- oracle11g dbconsole无法启动问题解决
- 爬虫程序的优化
- Fedora17安装 rhabse时Thrift安装错误解决方法
- android 操作系统
- 我的jenkins自动部署方案演进史
- android.graphics.Rect类的详解
- 【IDE-Visual Studio】360截图快捷键与vs2010 类向导冲突
- javascript实现弹出窗口的代码 (2007-07-03 14:04:34)
- centos5.5_64bit部署kafka
- nec(网易前端css框架)