1、用 iptables 的 owner 模塊,給 --pid-owner 加上 MARK,然后 tc 里針對(duì)這個(gè) MARK 做限速 現(xiàn)在的服務(wù)器上,基本已經(jīng)普及了 SMP ,更進(jìn)一步的,內(nèi)核已經(jīng)在自動(dòng)發(fā)現(xiàn)支持 SMP 的時(shí)候,在 iptables 里把 owner 模塊的 pid/cmd/sid 三個(gè) match 都去掉了!現(xiàn)在的 owner 里只有 uid/gid 兩個(gè)。所以這條路,在生產(chǎn)環(huán)境上基本行不通。所以推薦下面的兩種方法:
大箐山網(wǎng)站建設(shè)公司創(chuàng)新互聯(lián)公司,大箐山網(wǎng)站設(shè)計(jì)制作,有大型網(wǎng)站制作公司豐富經(jīng)驗(yàn)。已為大箐山近千家提供企業(yè)網(wǎng)站建設(shè)服務(wù)。企業(yè)網(wǎng)站搭建\外貿(mào)營(yíng)銷網(wǎng)站建設(shè)要多少錢,請(qǐng)找那個(gè)售后服務(wù)好的大箐山做網(wǎng)站的公司定做!
2、使用 pipeviewer和 trickle這兩個(gè)工具。trickle 是在BSD 上誕生的項(xiàng)目,這個(gè)工具使用ELF 的 preloader 機(jī)制,在命令執(zhí)行的時(shí)候替換掉標(biāo)準(zhǔn)庫(kù)中的 socket recv() 和 send() 部分,達(dá)到限速的效
3、cgroup ,它有 net_cls 控制器。不過(guò)和其他控制器不太一樣的是它不直接控制網(wǎng)絡(luò)讀寫,只是給網(wǎng)絡(luò)包打上一個(gè)標(biāo)記,然后把專業(yè)的事情交給專業(yè)的 TC 去做。嗯,思路和原先的 iptable 是很類似的。
liunx本身沒(méi)有特別完美的網(wǎng)速命令,但有幾個(gè)可以用nload,iftop,iptraf,nethogs,bmon,slurm,tcptrack這些命令都不是liunx內(nèi)部命令,也就是說(shuō)不是所有l(wèi)iunx版本都包括這些命令。目前最流行的是speedtest這個(gè)命令是需要安裝的
可以的,你可以在Linux系統(tǒng)中安裝一個(gè)Trickle,通過(guò)Trickle啟動(dòng)程序,就能限制這個(gè)程序的上傳、下載網(wǎng)速了,不過(guò)只對(duì)部分tcp連接有效。
樓主如果對(duì)Linux系統(tǒng)感興趣,想學(xué)習(xí)更多Linux系統(tǒng)知識(shí),可以百度《Linux就該這么學(xué)》,里面有很多實(shí)用的命令可以參考學(xué)習(xí)。
限制網(wǎng)絡(luò)流量速率的一種方法是通過(guò)一個(gè)名為trickle的命令行工具。通過(guò)在程序運(yùn)行時(shí),預(yù)先加載一個(gè)速率限制 socket 庫(kù) 的方法,trickle 命令允許你改變?nèi)我庖粋€(gè)特定程序的流量。 trickle 命令有一個(gè)很好的特性是它僅在用戶空間中運(yùn)行,這意味著,你不必需要 root 權(quán)限就可以限制一個(gè)程序的帶寬使用。要能使用 trickle 程序控制程序的帶寬,這個(gè)程序就必須使用非靜態(tài)鏈接庫(kù)的套接字接口。
將你的 scp 會(huì)話的最大上傳帶寬設(shè)定為 100 KB/s:
$ trickle -u 100 scp backup.tgz alice@remote_host.com:
另一種控制你的帶寬資源的方式是在每一個(gè)接口上限制帶寬。這在你與其他人分享你的網(wǎng)絡(luò)連接的上行帶寬時(shí)尤為實(shí)用。同其他一樣,Linux 有一個(gè)工具來(lái)為你做這件事。wondershaper就是干這個(gè)的。
wondershaper 實(shí)際上是一個(gè) shell 腳本,它使用 tc 來(lái)定義流量調(diào)整命令,使用 QoS 來(lái)處理特定的網(wǎng)絡(luò)接口。外發(fā)流量通過(guò)放在不同優(yōu)先級(jí)的隊(duì)列中,達(dá)到限制傳出流量速率的目的;而傳入流量通過(guò)丟包的方式來(lái)達(dá)到速率限制的目的。
舉個(gè)例子, 將 eth0 的最大下載/上傳帶寬分別設(shè)定為 1000Kbit/s 和 500Kbit/s:
$ sudo wondershaper interface download-rate upload-rate
限制網(wǎng)絡(luò)流量速率的一種方法是通過(guò)一個(gè)名為trickle的命令行工具。通過(guò)在程序運(yùn)行時(shí),預(yù)先加載一個(gè)速率限制 socket 庫(kù) 的方法,trickle 命令允許你改變?nèi)我庖粋€(gè)特定程序的流量。 trickle 命令有一個(gè)很好的特性是它僅在用戶空間中運(yùn)行,這意味著,你不必需要 root 權(quán)限就可以限制一個(gè)程序的帶寬使用。要能使用 trickle 程序控制程序的帶寬,這個(gè)程序就必須使用非靜態(tài)鏈接庫(kù)的套接字接口。當(dāng)你想對(duì)一個(gè)不具有內(nèi)置帶寬控制功能的程序進(jìn)行速率限制時(shí),trickle 可以幫得上忙。
在 Ubuntu,Debian 及其衍生發(fā)行版中安裝 trickle :
1
$ sudo apt-get install trickle
在 Fdora 或 CentOS/RHEL (帶有 EPEL 軟件倉(cāng)庫(kù)):
1
$ sudo yum install trickle
trickle 的基本使用方法如下。僅需簡(jiǎn)單地把 trickle 命令(及速率參數(shù))放在你想運(yùn)行的命令之前。
1
$ trickle -d download-rate -u upload-rate command
這就可以將 command 的下載和上傳速率限定為特定值(單位 KBytes/s)。
例如,將你的 scp 會(huì)話的最大上傳帶寬設(shè)定為 100 KB/s:
1
$ trickle -u 100 scp backup.tgz alice@remote_host.com:
如若你想,你可以通過(guò)創(chuàng)建一個(gè)自定義啟動(dòng)器的方式,使用下面的命令為你的 Firefox 瀏覽器設(shè)定最大下載速率(例如, 300 KB/s)。
1
trickle -d 300 firefox %u
最后, trickle 也可以以守護(hù)進(jìn)程模式運(yùn)行,在該模式下,它將會(huì)限制所有通過(guò) trickle 啟動(dòng)且正在運(yùn)行的程序的總帶寬之和。 啟動(dòng) trickle 使其作為一個(gè)守護(hù)進(jìn)程(例如, trickled):
1
trickle -d 300 firefox %u
一旦 trickled 守護(hù)進(jìn)程在后臺(tái)運(yùn)行,你便可以通過(guò) trickle 命令來(lái)啟動(dòng)其他程序。假如你通過(guò) trickle 啟動(dòng)一個(gè)程序,那么這個(gè)程序的最大下載速率將是 1000 KB/s, 假如你再通過(guò) trickle 啟動(dòng)了另一個(gè)程序,則每個(gè)程序的(下載)速率極限將會(huì)被限制為 500 KB/s,等等。
在 Linux 中限制一個(gè)網(wǎng)絡(luò)接口的速率
另一種控制你的帶寬資源的方式是在每一個(gè)接口上限制帶寬。這在你與其他人分享你的網(wǎng)絡(luò)連接的上行帶寬時(shí)尤為實(shí)用。同其他一樣,Linux 有一個(gè)工具來(lái)為你做這件事。wondershaper就是干這個(gè)的。
wondershaper 實(shí)際上是一個(gè) shell 腳本,它使用 tc 來(lái)定義流量調(diào)整命令,使用 QoS 來(lái)處理特定的網(wǎng)絡(luò)接口。外發(fā)流量通過(guò)放在不同優(yōu)先級(jí)的隊(duì)列中,達(dá)到限制傳出流量速率的目的;而傳入流量通過(guò)丟包的方式來(lái)達(dá)到速率限制的目的。
事實(shí)上, wondershaper 的既定目標(biāo)不僅僅是對(duì)一個(gè)接口增加其帶寬上限;當(dāng)批量下載或上傳正在進(jìn)行時(shí),wondershaper 還試圖去保持互動(dòng)性會(huì)話如 SSH 的低延遲。同樣的,它還會(huì)控制批量上傳(例如, Dropbox 的同步)不會(huì)使得下載“窒息”,反之亦然。
在 Ubuntu Debian 及其衍生發(fā)行版中安裝 wondershaper:
1
trickle -d 300 firefox %u
在 Fdora 或 CentOS/RHEL (帶有 EPEL 軟件倉(cāng)庫(kù)) 中安裝 wondershaper:
1
trickle -d 300 firefox %u
wondershaper 的基本使用如下:
1
$ sudo wondershaper interface download-rate upload-rate
舉個(gè)例子, 將 eth0 的最大下載/上傳帶寬分別設(shè)定為 1000Kbit/s 和 500Kbit/s:
1
$ sudo wondershaper interface download-rate upload-rate
你也可以通過(guò)運(yùn)行下面的命令將速率限制進(jìn)行消除:
1
$ sudo wondershaper interface download-rate upload-rate
假如你對(duì) wondershaper 的運(yùn)行原理感興趣,你可以閱讀其 shell 腳本源文件(/sbin/wondershaper)。
總結(jié)
在本教程中,我介紹了兩種不同的方法,來(lái)達(dá)到如何在 Linux 桌面環(huán)境中,控制每個(gè)應(yīng)用或每個(gè)接口的帶寬使用的目的。 這些工具的使用都很簡(jiǎn)單,都為用戶提供了一個(gè)快速且容易的方式來(lái)調(diào)整或限制流量。 如果你想更多地了解如何在 Linux 中進(jìn)行速率控制,請(qǐng)參考 the Linux bible.