作者彙整:clyang
aria2c – Linux下的多線程下載軟體
很多朋友轉換到Linux下的時候,再下載大型檔案時,往往會遭遇到網路速度緩慢,想要使用在Windows上面像是flashget這類的多線程軟體,來加速下載。這裡推薦一個好用的小軟體 – aria2c,不但能夠多線程下載檔案,也能夠拿來下載bittorrent的檔案(有支援DHT),不過下載bittorrent還是建議使用rtorrent比較威猛剛強一點,這邊介紹在Debian下面如何安裝使用aria2c。 在Debian下面安裝aria2c非常簡單: apt-get install aria2c 多線程下載使用方法如下: aira2c -s16 http://file.to.download/file.zip -s 後面接的數字是線程數目,限制是1~16,應該可以滿足大多數人的需求,如果需要更高的數目,可以透過 -j 來增加。 如果你需要使用aria2c來下載bittorrent檔案,使用方法如下: aria2c –enable-dht –listen-port=某個port –max-upload-limit=單一檔案上傳速度 –max-overall-upload-limit=全局上傳速度 –torrent-file=torrent檔案 上面簡單介紹了最常使用到的兩種功能,其他的細部設定請自行參酌aria2c的man page。
使用flashget 1.8以上的朋友請小心
昨天在使用flashget下載自己在VPS上面的資料後,檢察apache log竟然發現一堆不速之客的連線,都在嘗試我之前抓過的那個檔案(還好我習慣不錯,抓完即砍),後來網路上翻了一下才發現,flashget 1.8之後的版本,會非常"好心"的將你曾經下載過的連結都傳送到 stats.flashget.com 所以當其他user嘗試下載相同檔案時,便會使用連結到你的連結去下載。我目前的鴕鳥是解決法是,編輯c:\windows\system32\drivers\etc\hosts,在最後加上一行: 127.0.0.1 stats.flashget.com 來解決。如果你常使用這類的下載軟體,建議其他套來使用吧,才是永保安康之策。
ip_conntrack: table full, dropping packet
之前架設一台vpn時, 由dmesg看到一個警告訊息 "ip_conntrack: table full, dropping packet" google了一下發現似乎是個還蠻常見的問題,通常是NAT user過多或是同時建立太多tcp connection,導致table爆炸,因為Linux Kernel在NAT預設的tcp timeout是五天,難怪user多就爆炸。所以改法很簡單,就是把table加大,timeout縮短即可,要注意的是table所使用的memory為 ip_conntrack_max * 232 Bytes 所以要小心大小,不要改的太爽,加到超過你記憶體能夠負擔的能力,步驟如下: 首先查看一下table size以及timeout預設是多少: cat /proc/sys/net/ipv4/ip_conntrack_max cat /proc/sys/net/ipv4/netfilter/ip_conntrack_tcp_timeout_established 上面兩行指令能告訴你,目前機器上的table大小及tcp timeout時間 改法有二, 選一個你喜歡的作法即可 :Q 方法一: sysctl -w net.ipv4.ip_conntrack_max=131072 (or 任何妳喜歡且不會爆的值) sysctl -w net.ipv4.netfilter.ip_conntrack_tcp_timeout_established=600 (把這兩行寫到你的開機啟動檔裡面) 方法二: 編輯/etc/sysctl.conf, … 繼續閱讀
BCB Form Create/Close Procedure Flow
如果沒有搞清楚這些動作, 常常在不該cleanup的部份就先cleanup了,害得後面一些還會被callup的method想access的東西都access不到。然後程式就爆走啦 XDD,為了避免自己重蹈覆轍,還是寫一篇來記錄一下。[這是我自己測出來的結果,使用的是BCB 6.0,若有錯誤還請幫忙指正,謝謝 ]
使用cURL送trackback
之前再開發一個blog系統所需的module時,需要測試大量的trackback,本來是採用最笨的方法,申請一個blog,由那個blog來發trackback,後來因為這樣做實在太苦了,所以改採自己產生的方式。 根據trackback的規格,只要用GET的方式傳送要求即可,內容必須包含下列欄位: url (引用該文章的url) title (引用該文章的標題) blog_name (引用該文章的部落格名稱) excerpt (發送引用時附帶的額外資訊) 所以只要搭配方便的cURL即可達成目的,方法如下: curl -d url=TRACKBACK_URL -d title=TRACKBACK_TITLE -d blog_name=TRACKBACK_BLOG_NAME -d excerpt=TRACKBACK_EXCERPT URL 如此一來便可大量產生所需的trackback來做測試啦。
如何merge CIDR
上一篇"高效率的iptables GEOIP模組"的留言有人問到,如何去合併CIDR?用人工計算是一件非常痛苦的事情,資料一多當然就變的天方夜譚,這麼苦命的事情當然是交給電腦去做囉。 要合併CIDR,Perl提供了非常簡單的方法,程式碼如下: #!/usr/bin/perl use Net::CIDR::Lite; my $cidr = Net::CIDR::Lite->new; $cidr->add("202.38.175.0/24"); $cidr->add("202.38.174.0/24"); $cidr->add("202.38.173.0/24"); $cidr->add("202.38.172.0/24"); $cidr->add("202.38.171.0/24"); $cidr->add("202.38.170.0/24"); $cidr->add("202.38.169.0/24"); $cidr->add("202.38.168.0/24"); print "$_\n" for $cidr->list; 執行後,會輸出合併後的結果: 202.38.168.0/21 輕鬆寫意阿~
高效率的iptables GEOIP模組
手邊有台vpn server上面用iptables跑policy routing,連往大陸地區就從特定interface出去,之前的做法是到apnic取得大陸地區最新的ip list後,再利用script一行一行餵進去iptables裡面,即使做過CIDR merge後,還是快要達到800筆record,每每上線使用者一多、或是流量變大時機器的loading就會增加,這種作法不用分析也大概猜得出來,iptables內部作rule match是採用list match,當rule量很大的時候,效能當然會變差。
當apache的errorlog出現configured request variable name length limit exceeded
之前在寫Picasa2Wordpress的時候,測試的時候,遇到一個詭異的問題,在我有權限能access的機器們上面跑,就是有一台跑不起來,後來查了一下apache2的log才發現,原來是php suhosin module的問題,預設最大的POST及GET變數名稱最大只能夠是64字元,但是Picasa POST出去的卻遠超過,所以就被檔下來了。 解決方法很簡單,編輯/etc/php5/apache2/conf.d/suhosin.ini,加上下面這三行即可: suhosin.request.max_varname_length=128 suhosin.get.max_name_length=128 suhosin.post.max_name_length=128 搞定收工。
