dhtcrawler最早的版本有很多问题,修复过的最大的一个问题是关于erlang定时器的,在DHT实现中,需要对每个节点每个peer做超时处理,在erlang中的做法直接是针对每个节点注册了一个定时器。这不是问题,问题在于定时器资源就像没有GC的内存资源一样,是会由于程序员的代码问题而出现资源泄漏。所以,dhtcrawler第一个版本在节点数配置在100以上的情况下,用不了多久就会内存耗尽,最终导致erlang虚拟机core dump。 以及写了个磁力搜索的网页

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

磁力搜索第二版-dhtcrawler2相关推荐

  1. GOOGLE HACKS巧妙使用网络搜索的技巧和工具(第二版)已经出版(上)--IT man

    Csdn-Blog <script language="javascript" src="http://www.023rcsc.com/count/count2.a ...

  2. 《GOOGLE HACKS巧妙使用网络搜索的技巧和工具(第二版)》

    全书分为网页.高级网页.图像.新闻组和论坛.附加功能.Gmail.广告.Web管理和Google编程9章,不仅阐述了用Google搜索的方方面面,而且能帮你最大程度地挖掘Google的潜能,即挖掘出每 ...

  3. GOOGLE HACKS巧妙使用网络搜索的技巧和工具(第二版)已经出版

    全书分为网页.高级网页.图像.新闻组和论坛.附加功能.Gmail.广告.Web管理和Google编程9章,不仅阐述了用Google搜索的方方面面,而且能帮你最大程度地挖掘Google的潜能,即挖掘出每 ...

  4. Python 程序设计(第二版)董付国_清华大学出版社_习题答案与分析【针对8.4及其之前的】

    更多精彩内容:(没有设置公众号获得,麻烦动动小手~谢谢) CSDN下载:Python编程无师自通电子书,[美]科里·奥尔索夫(Cory Althoff)-文档类-CSDN下载 百度云:链接:https ...

  5. 测序发展史,150年的风雨历程 (第二版)

    测序技术的发展带来了组学技术的应用和普及,而微生物组领域也是最大的受益者之一,今天为大家带来生信宝典创作的<测序发展史,150年的风雨历程 (第二版)>,带大家回顾一下本领域的前世今生. ...

  6. 零基础入门学python 第二版-《零基础入门学习Python》第二版和第一版的区别在哪里呢?...

    第一版 时光荏苒,一晃间,距离<零基础入门学习 Python>出版(2016年11月)已经过去两年多了,在这段时间里, Python 逐步走入了大家的视野,这门语言因其简洁的语法风格,在云 ...

  7. 《程序员代码面试指南第二版》Python实现(个人读书笔记)

    说明 最近在读左神的书---<程序员代码面试指南-IT名企算法与数据结构题目最优解(第二版)>以及看了一些左神的基础.进阶.高频等视频课程,为了记录自己的学习成果,并且方便以后查看,将自己 ...

  8. 《Python核心编程(第二版)》——1.9 练习

    本节书摘来自异步社区<Python核心编程(第二版)>一书中的第1章,第1.9节,作者[美]Wesley J. Chun,宋吉广 译,更多章节内容可以访问云栖社区"异步社区&qu ...

  9. 【Python 自然语言处理 第二版】读书笔记1:语言处理与Python

    文章目录 前言 语言处理与Python 一.语言计算:文本和单词 1.NLTK入门 (1)安装(nltk.nltk.book) (2)搜索文本 (3)词汇计数 2.列表与字符串 (1)列表操作 (2) ...

最新文章

  1. tp3分布式session mysql_分布式数据库支持
  2. 谷歌浏览器跨域报错解决办法
  3. C++/CLI思辨录之代理构造函数
  4. gdb 编译make: *** [all] 错误 2_Dev 日志 | Segmentation Fault 和 GCC 编译问题排查
  5. apiexample.c例子教我们如何利用FFMPEG库中的API函数来编写自己的编解码程序
  6. C# Android wifi控制灯,求助如何在基于安卓通过WiFi与Arduino通信,实现对LED灯的控制。...
  7. 年薪百万!这所高校一名本科生入选“天才少年”
  8. Node.js学习心得
  9. 《数据库系统概论》第五版 +学习笔记总目录
  10. 齐齐哈尔鹤城计算机学校,齐齐哈尔市鹤城高级中学
  11. java 废弃方法_在Java中使用Deprecated方法或类是错误的吗?
  12. 复利计算器app发布
  13. java springboot 商城系统源码
  14. 更多单词/词组/短语补充和总结
  15. 人脸核身 微信h5_微信小程序人脸核身---快速入门到实战(附开发工具类,复制即用)...
  16. ILSpy中baml转化为xaml的改进(三)
  17. 数学建模学习笔记(一):插值法
  18. Extmail修改模板及其它配置
  19. java websocket即时通讯+layui实现移动端一对一聊天客服功能
  20. 使用 HttpWebRequest 发送模拟 POST 请求(转载)

热门文章

  1. uni-app仿抖音评论列表
  2. 我的2015计划,目标
  3. 2021年度并购重组中介机构排名(独立财务顾问/律所/审计/评估)
  4. PCA9685版OTTO开源跳舞机器人
  5. 将solidworks机械臂模型导入Matlab
  6. LoadRunner-性能测试
  7. python 中 关于reverse() 和 reversed()的用法介绍
  8. 英文单词词形还原程序
  9. Cell:构建出首个泛癌真菌微生物组图谱
  10. 如何在Swift3中获取Json包的内容(unwrap Json package)