管道限流利器pv
pv 是什么
可不是 page view,是pipe viewer,管道偷窺器的縮寫。這個(gè)東西的源站點(diǎn)在google code上,需要的話可以訪問(wèn)pv 的官網(wǎng)?。
這個(gè)東西的官方手冊(cè)頁(yè)(man pv或者pv(1))里面說(shuō),pv是一個(gè)讓管道用戶可以看到管道里發(fā)生什么事情的工具。可以看到管道處理的進(jìn)度等等。
pv 是干什么的
實(shí)際上,pv(1) 的命令行參數(shù)非常豐富。除了可以進(jìn)行管道觀察之外,還可以干很多事情。下面列舉一些:
查看管道中的數(shù)據(jù)流速
查看管道中數(shù)據(jù)流動(dòng)的時(shí)間
通過(guò)給出預(yù)期的數(shù)據(jù)大小,計(jì)算預(yù)期完成的時(shí)間
給管道內(nèi)流動(dòng)的數(shù)據(jù)傳輸速率限流
為什么用管道限流
我們經(jīng)常有各種限流的需求,比如,跨網(wǎng)絡(luò)拷貝數(shù)據(jù)的時(shí)候、比如我們向磁盤書寫數(shù)據(jù)的時(shí)候。為了避免過(guò)分占據(jù)網(wǎng)絡(luò)帶寬或者磁盤帶寬,我們都要想辦法做一些限流的事情。
而限流恰恰是一個(gè)挺麻煩的事情,有些工具有限流功能,比如 scp、rsync等,有些則沒(méi)有,比如cp、tar、nc。這讓我們的自動(dòng)化腳本產(chǎn)生巨大的難度。
pv 最讓人激動(dòng)人心的功能,就是能通過(guò)參數(shù)對(duì)管道中的數(shù)據(jù)流動(dòng)速度進(jìn)行限流,這個(gè)參數(shù)是下面這個(gè):
-L RATE, --rate-limit RATE
我們可以通過(guò) k, m, g 的后綴來(lái)表示千、兆、吉的數(shù)量級(jí),數(shù)據(jù)尺寸是“字節(jié)”。比如:
pv -L 300k
意思是讓pv把管道中的數(shù)據(jù)流速限制在300K字節(jié)每秒。
為什么用管道限流呢?
因?yàn)槲覀冎?#xff0c;我們?yōu)榱吮3志W(wǎng)絡(luò)的禮貌,在生產(chǎn)環(huán)境中,盡量不要把帶寬占滿,有時(shí)候有些操作,是會(huì)把帶寬占滿的。比如,我們?nèi)倏截愐粋€(gè)巨大的文件,很可能打擊到一些網(wǎng)絡(luò)薄弱的環(huán)節(jié)。而我們?cè)谧詣?dòng)化腳本中經(jīng)常使用管道,如果我們可以利用管道限流,那么我們就完全可以在本地利用管道先把流量限制住,然后再使用各種形式的io,從而大大優(yōu)化各種io環(huán)節(jié),降低開銷。而管道限流本身,基本上讓我們可以對(duì)任意的支持標(biāo)準(zhǔn)輸入輸出的命令進(jìn)行限流,這樣其使用范圍近乎是無(wú)限的。
?
獲取pv
在大多數(shù)RedHat基礎(chǔ)的服務(wù)器上,直接用yum就可以安裝:
sudo yum install pv
slackware 則可以去 slackbuilds.org 獲取制作包制作 txz 安裝包。最辛苦的可以去上面的 google code 下載源代碼,然后編譯安裝,編譯安裝的標(biāo)準(zhǔn)方法就是:
tar zxvf .. cd pv... ./configure make make install
的過(guò)程。
用法和例子
我想看看一個(gè)慢速的查詢是否發(fā)生了數(shù)據(jù)傳輸
我有個(gè)不快的查詢,大概要好幾分鐘跑完,并且獲取的數(shù)據(jù)也比較多,我想試試執(zhí)行一下,看看大概會(huì)有多久:
time psql -U qa -h somehost.qunar.com -d vacation -f t3.sql | pv -t -r > /dev/nul
查詢保存在 t3.sql 里頭,我鏈接到測(cè)試庫(kù)進(jìn)行測(cè)試,這個(gè) sql 會(huì)把數(shù)據(jù) copy 到標(biāo)準(zhǔn)輸出上。然后,我用 pv 查看前面 psql 的標(biāo)準(zhǔn)輸出管道,
我讓 pv 記錄時(shí)間: -t? 選項(xiàng)
記錄傳輸速率: -r? 選項(xiàng)
然后用開頭的 time 命令看看這個(gè)命令實(shí)際使用的時(shí)間。
我想傳輸一個(gè)大數(shù)據(jù)到rtools1上頭,但是需要限流100k/秒
可以用類似下面的命令:
cd /opt ; tar cf -?datadir | pv -e -t -b -L 10M| ssh haha@wjoyxt.com 'cd /opt ; tar xvf -'
?
轉(zhuǎn)載于:https://www.cnblogs.com/wjoyxt/p/4836919.html
總結(jié)
- 上一篇: 定位 - MapKit-自定义大头针
- 下一篇: 个人作业Week1