文章目錄
- 1. 業務訴求
- 2. 初次篩選
- 3. 鹿死誰手
- 4. aria2大獲全勝
- 5. 歡迎留言
1. 業務訴求
??最近在作業程序中,得知了一個新的需求,就是需要每天去FTP服務器下載指定的檔案,其中每天的下載量大約是百萬級,經理要求在一天內得到比wget更加有效更加優雅的落地方案,這可真是壓力山大啊!

??由于時間緊,任務重,沒有時間去自己造輪子,所以就調研使用已有的高效的工具去解決上述問題,
??那么問題來了,如何去尋找最高效的工具呢?用什么樣的資料來證明哪個工具是最優的呢?

2. 初次篩選
??通過搜索引擎搜尋了一番,得到了以下三個候選者:aria2、axel、mwget,那如何進行評判呢?翻來覆去,苦思冥想,最侄訓是打開每日必上網站:全球最大同性交友網站之github,那就不妨看看這三個軟體的評分資料吧(其中Star表示點贊數,Fork表示復制數):
| 軟體 | Star | Fork |
|---|---|---|
| aria2 | 22600 | 2700 |
| axel | 1800 | 197 |
| mwget | 15 | 4 |
??容易看出,軟體與軟體之間的差別真的比人與人之間的差別還要大,所以就先把最弱的mwget排除掉,再用實踐證明aria2和axel到底哪個是真正的“屠龍刀”,

3. 鹿死誰手
??由于下載資料量為百萬級,但是由于時間有限,所以無法進行當天全量資料測驗,隨機抽樣選擇了一萬資料進行測驗,簡單起見,用默認引數進行測驗比較,另外為了證明是否比wget有提升,則同時加上wget的測評,結果如下所示:
| 軟體 | 1W檔案下載時間(s) |
|---|---|
| aria2 | 225s |
| wget | 387s |
| axel | 756s |
??讓人大跌眼鏡的是,axel比wget還差,可能是因為每個檔案大小比較小,換個業務場景,axel效果可能就很好呢,
4. aria2大獲全勝
??那能否在aria2的基礎上,優化引數從而達到最佳的效果呢?
??通過不斷優化引數,最終最優的命令為:aria2c -j 10 -i test_url.csv -s 1 -q,其中-j 10表示10個行程同時下載,-i test_url.csv表示從檔案中逐行讀取URL進行下載,-s 1表示單個執行緒(主要是由于檔案小,如果大檔案則選用多執行緒會更快),-q表示靜默模式(不會逐行列印下載資訊,節約時間),優化后的引數如下所示:
| 軟體 | 1W檔案下載時間(s) |
|---|---|
| aria2 優化前 | 225s |
| aria2 優化后 | 190s |
??雖然優化后提升不是特別明顯,但這只是對于1W資料而言的,而生產環境是每天一百萬的資料,所以差別就不小了,aria2其他引數可見鏈接https://aria2.github.io/manual/en/html/aria2c.html
??由于自己是在Centos環境下安裝使用aria2,它的安裝命令很簡單,如下所示:
yum install aria2
5. 歡迎留言
??大家還有其他推薦的下載軟體嗎?適合于大量檔案的神器嘛?有的話歡迎推薦,沒有的話也可以聊聊自己有沒有別的類似的需求呢,
??文章最后給自己打個廣告,先做個自我介紹:我是herosunly,985院校碩士畢業,現擔任演算法研究員一職,熱衷于機器學習演算法研究與應用,曾獲得阿里云天池安全惡意程式檢測第一名,科大訊飛阿爾茨海默綜合癥預測挑戰賽第四名,科大訊飛事件抽取挑戰賽第七名,Datacon大資料安全分析比賽第五名,擁有多項發明專利,對機器學習和深度學習擁有自己獨到的見解,曾經輔導過若干個非計算機專業的學生進入到演算法行業就業,希望和大家一起成長進步,以下幾個專欄歡迎大家訂閱學習:
AI比賽經驗分享
https://blog.csdn.net/herosunly/category_9393702.html
機器學習入門之工具篇
https://blog.csdn.net/herosunly/category_10457626.html
爬蟲實戰
https://blog.csdn.net/herosunly/category_10748674.html
新手學Python
https://blog.csdn.net/herosunly/category_10831935.html
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/279384.html
標籤:其他
