利用DHT網路原理製作bt採集蜘蛛

2021-09-30 11:31:09 字數 539 閱讀 8305

dhtcrawler最早的版本有很多問題,修復過的最大的乙個問題是關於erlang定時器的,在dht實現中,需要對每個節點每個peer做超時處理,在erlang中的做法直接是針對每個節點註冊了乙個定時器。這不是問題,問題在於定時器資源就像沒有gc的記憶體資源一樣,是會由於程式設計師的**問題而出現資源洩漏。所以,dhtcrawler第乙個版本在節點數配置在100以上的情況下,用不了多久就會記憶體耗盡,最終導致erlang虛擬機器core dump。找了臺伺服器將磁力鏈結爬蟲架設起來搜尋)大家可以看下。

將hash的獲取方式做了調整後,dhtcrawler在幾分鐘以內以幾乎每秒上百個新增種子的速度工作。然後,程式掛掉。

從dhtcrawler到今天為止的dhtcrawler2,中間間隔了剛好1個月。我的所有業餘時間全部撲在這個專案上,面臨的問題一直都是程式的記憶體洩漏、資源收錄的速度不夠快,到後來又變為資料庫壓力過大。每一天我都以為我將會完成乙個穩定版本,然後終於可以去幹點別的事情,但總是幹不完,目前完沒完都還在觀察。我始終明白在做優化前需要進行詳盡的資料收集和分析,從而真正地優化到正確的點上,但也總是憑直覺和少量資料分析就開始嘗試。

利用DHT網路原理製作bt採集蜘蛛

dhtcrawler最早的版本有很多問題,修復過的最大的乙個問題是關於erlang定時器的,在dht實現中,需要對每個節點每個peer做超時處理,在erlang中的做法直接是針對每個節點註冊了乙個定時器。這不是問題,問題在於定時器資源就像沒有gc的記憶體資源一樣,是會由於程式設計師的 問題而出現資源...

利用DHT網路原理製作bt採集蜘蛛

我最開始在選用資料庫時,為了不使用第三方庫,打算使用erlang自帶的mnesia。但是因為涉及到字串匹配搜尋,mnesia的查詢語句在我看來太不友好,在經過一些資料查閱後就直接放棄了。效果可以看下具體51搜尋展示結合xunsearch全文檢索技術,可以達到毫秒級的資料搜尋 然後我打算使用couch...

利用DHT網路原理製作bt採集蜘蛛

torrent檔案內的資料結構分為以下幾部分 關於這個網路的工作原理,參看 p2p中dht網路爬蟲以及寫了個 磁力搜尋的網頁。announce tracker的主伺服器 announce list tracker伺服器列表 comment 種子檔案的注釋 comment.utf 8 種子檔案注釋的u...