dhtcrawler最早的版本有很多问题,修复过的最大的一个问题是关于erlang定时器的,在DHT实现中,需要对每个节点每个peer做超时处理,在erlang中的做法直接是针对每个节点注册了一个定时器。这不是问题,问题在于定时器资源就像没有GC的内存资源一样,是会由于程序员的代码问题而出现资源泄漏。所以,dhtcrawler第一个版本在节点数配置在100以上的情况下,用不了多久就会内存耗尽,最终导致erlang虚拟机core dump。找了台服务器将磁力链接爬虫架设起来http://www.51bt.cc(51搜索)大家可以看下。

除了这个问题以外,dhtcrawler的资源收录速度也不是很快。这当然跟数据库和获取种子的速度有直接关系。尤其是获取种子,使用的是一些提供info-hash到种子映射的网站,通过HTTP请求来下载种子文件。我以为通过BT协议直接下载种子会快些,并且实时性也要高很多,因为这个种子可能未被这些缓存网站收录,但却可以直接向对方请求得到。为此,我还特地翻阅了相关协议,并且用erlang实现了(以后的文章我会讲到具体实现这个协议)。

后来我怀疑get_peers的数量会不会比announce_peer多,但是理论上一般的客户端在get_peers之后都是announce_peer,但是如果get_peers查询的peers恰好不在线呢?这意味着很多资源虽然已经存在,只不过你恰好暂时请求不到。实际测试时,发现get_peers基本是announce_peer数量的10倍。

将hash的获取方式做了调整后,dhtcrawler在几分钟以内以几乎每秒上百个新增种子的速度工作。然后,程序挂掉。

从dhtcrawler到今天为止的dhtcrawler2,中间间隔了刚好1个月。我的所有业余时间全部扑在这个项目上,面临的问题一直都是程序的内存泄漏、资源收录的速度不够快,到后来又变为数据库压力过大。每一天我都以为我将会完成一个稳定版本,然后终于可以去干点别的事情,但总是干不完,目前完没完都还在观察。我始终明白在做优化前需要进行详尽的数据收集和分析,从而真正地优化到正确的点上,但也总是凭直觉和少量数据分析就开始尝试。

DHT网络原理制作bt采集蜘蛛,开源版相关推荐

  1. 利用DHT网络原理制作bt采集

    P2P系统的应用越来越广泛,在文件共享.流媒体服务.即时通讯交流.计算和存储能力共享以及协同处理与服务等方面都能看到P2P的存在,一些P2P应用如Napster.eMule.BitTorrent等早已 ...

  2. 利用DHT网络原理制作

    我最开始在选用数据库时,为了不使用第三方库,打算使用erlang自带的mnesia.但是因为涉及到字符串匹配搜索,mnesia的查询语句在我看来太不友好,在经过一些资料查阅后就直接放弃了. 然后我打算 ...

  3. P2P中DHT网络原理

    2019独角兽企业重金招聘Python工程师标准>>> DHT网络爬虫基于DHT网络构建了一个P2P资源搜索引擎.这个搜索引擎不但可以用于构建DHT网络中活跃的资源索引(活跃的资源意 ...

  4. 结构化P2P网络——DHT网络原理

    P2P系统的应用越来越广泛,在文件共享.流媒体服务.即时通讯交流.计算和存储能力共享以及协同处理与服务等方面都能看到P2P的存在,一些P2P应用如Napster.eMule.BitTorrent等早已 ...

  5. 易企秀手机html5场景源码,仿易企秀V15.1手机网页DIY制作工具完整版开源版源码修复采......

    源码介绍: 源码内附详细安装文档,可轻松搭建网站. 易企秀是一款针对移动互联网营销的手机网页DIY制作工具,用户可以编辑手机网页,分享到社交网络,通过报名表单收集潜在客户或其他反馈信息.用户通过易企秀 ...

  6. DHT技术,IPFS,BT是个啥

    1.DHT技术即分布式哈希表技术,是一种分布式存储方法.这种网络不需要中心节点服务器,而是每个客户端负责一个小范围的路由,并负责存储一小部分数据, 从而实现整个DHT网络的寻址和存储.和中心节点服务器 ...

  7. 使用C#实现DHT磁力搜索的BT种子后端管理程序+数据库设计(开源)

    直接上程序界面,了解整体工作流程是什么样子的,求服务器进行挂机测试,需要固定IP,空间大概需要10G左右(主要是BT种子占用空间过大),最好有SQLSERVER来做为存储数据库,目前采用的是ACCES ...

  8. [C#搜片神器] 之P2P中DHT网络爬虫原理

    继续接着上一篇写:使用C#实现DHT磁力搜索的BT种子后端管理程序+数据库设计(开源)[搜片神器] 昨天由于开源的时候没有注意运行环境,直接没有考虑下载BT种子文件时生成子文件夹,可能导致有的朋友运行 ...

  9. 基于DHT网络的最强BT资源搜索引擎engiy.com

    现如今,基DHT网络爬虫的磁力搜索,BT搜索资源已经很多了,但大多是挂马,弹窗垃圾站居多. 只有engiy.com是真正意义上的无广告.并且是实时索引(好像索引用的是elasticsearch).而且 ...

最新文章

  1. python 之路200行Python代码写了个打飞机游戏
  2. Science:英国Castrillo组揭示微生物群与根内皮的协调支持植物营养平衡!
  3. Android架构详解
  4. Linux 下编译安装软件,找不到共享库 xx.so 的解决办法
  5. python怎样导入excel数据_python导入excel数据
  6. oracle 自增1,oracle自增无法从1开始
  7. 对 Redis 中的有序集合SortedSet的理解
  8. android 跳转动画黑屏,Android8.0 适配解决页面跳转过程出现短暂黑屏的问题
  9. linux需要你的不懈努力
  10. MYSQL添加约束的两种方法
  11. java 托盘开发_基于java开发之系统托盘的应用
  12. arcgis-tomcat-cors
  13. 爱python的胖虾_爱了爱了!0.052 秒打开 100GB 数据,这个Python开源库火爆了!
  14. Mybatis-Pagehelper
  15. 微PE工具箱四合一下载并安装
  16. android屏幕有残影,如何预防手机烧屏 防止手机屏幕出现残影教程分享
  17. Web前端培训分享:Web前端三大主流框架对比
  18. Apple 开发者账户类型
  19. python 等值面 插值_对离散点进行克里金插值并输出矢量等值面
  20. AndroidStudio打包成APK安装运行闪退的解决方法

热门文章

  1. 高斯-克吕格(Gauss-Kruger)投影与UTM投影的在ArcGIS中的区别
  2. 为何推荐windows平台学习机器人操作系统ROS?
  3. 《改变世界的机器》作者丹尼尔·T·琼斯获 ILSSI 终身成就奖
  4. 电源模块KIM-3R35L 超越KIS3R33S YEC-SD200 KIW3312S
  5. 前端图片无损压缩在线工具
  6. linux 解压命令不提示信息,技术编辑研习linux解压命令【解决措施】
  7. 音频编解码基础知识(一)
  8. stm32g4 下载算法_手把手教你制作基于IAR、STM32H7的下载算法
  9. Autodesk 3ds Max 2012 安装破解图文教程
  10. “5G 太耗电,关掉它!”