2013年11月18日 星期一

讓rtorrent不再卡頓

    使用rtorrent已經好多年了,從最早不支援UTF-8開始,直到現在也加入magnet後,配合screen的便利性,一直是我最愛使用的BT client。

    但是在0.9.x的版本後,常常會不定時的“卡頓”一下,就是整個rtorrent視窗完全無反應,當然也沒有下載/上載資料,過了些許時間後,就會看到速度又重0開始,然後又可以動作。其實用 screen detach 後,即使發生了這個情形也不用理會,但是當 torrent 數量多時,卡頓的情況會更嚴重,有時候過了一天,完全沒有下載進度。

    後來仔細查閱了rtorrent網站,作者其實有對這個問題做說明:
http://libtorrent.rakshasa.no/wiki/Install

    簡單講就是 rtorrent 是透過 libcurl 在 resolve hostname以及 http download,由於是單一線程來查詢hostname,所以單一個 torrent 的 tracker 沒有回應時,會造成整體無法回應,直到request timeout才能繼續執行。

    這個問題會在未來的版本改用multi-thread的方式解決,現階段是建議重新compile curl並加入 c-ares 的支援,很可惜的是目前 Debian 的 libcurl 並沒有加入。可以用 apt-get source curl下載後,修改 debian/rules 的內容,加入 --enable-ares 的選項重新打包即可。

    如果您信任小弟並且下載平台是 Debian Wheezy 的話,可以直接抓取小弟編譯好的版本:
libcurl3_7.26.0-1+Bwheezy5.1_amd64.deb 

直接安裝後,再重啟 rtorrent,就可以享受不再卡頓的效果了。