監(jiān)控是linux系統(tǒng)使用人員必備工具。選擇好的工具能有事半功倍的效果。下面介紹一款容易安裝,使用方便、功能強大的監(jiān)控工具sar。
sar(System Activity Reporter系統(tǒng)活動情況報告)是目前 Linux 上最為全面的系統(tǒng)性能分析工具之一,可以從多方面對系統(tǒng)的活動進行報告,包括:文件的讀寫情況、 系統(tǒng)調(diào)用的使用情況、磁盤I/O、CPU效率、內(nèi)存使用狀況、進程活動及IPC有關的活動等。
操作系統(tǒng):CentOS6.8
SSH工具:XShell
Java:1.7
參考資料:https://www.cnblogs.com/chris-cp/p/3674768.html
sar命令常用格式
sar [options] [-A] [-o file] t [n]
樣例:
sar -n DEV 5 10
操作命令結果截圖
IFACE:LAN接口 rxpck/s:每秒鐘接收的數(shù)據(jù)包 txpck/s:每秒鐘發(fā)送的數(shù)據(jù)包 rxbyt/s:每秒鐘接收的字節(jié)數(shù) txbyt/s:每秒鐘發(fā)送的字節(jié)數(shù) rxcmp/s:每秒鐘接收的壓縮數(shù)據(jù)包 txcmp/s:每秒鐘發(fā)送的壓縮數(shù)據(jù)包 rxmcst/s:每秒鐘接收的多播數(shù)據(jù)包
1. CPU資源監(jiān)控
sar -u -o test 10 3
2. inode、文件和其他內(nèi)核表監(jiān)控
sar -v 10 3
3. 內(nèi)存和交換空間監(jiān)控
sar -r 10 3
4. 內(nèi)存分頁監(jiān)控
sar -B 10 3
5. I/O和傳送速率監(jiān)控
sar -b 10 3
6. 進程隊列長度和平均負載狀態(tài)監(jiān)控
sar -q 10 3
7. 系統(tǒng)交換活動信息監(jiān)控
sar - W 10 3
8. 設備使用情況監(jiān)控
sar -d 10 3 –p
要判斷系統(tǒng)瓶頸問題,有時需幾個 sar 命令選項結合起來
懷疑CPU存在瓶頸,可用 sar -u 和 sar -q 等來查看
懷疑內(nèi)存存在瓶頸,可用 sar -B、sar -r 和 sar -W 等來查看
懷疑I/O存在瓶頸,可用 sar -b、sar -u 和 sar -d 等來查看
t為采樣間隔,n為采樣次數(shù),默認值是1;
-o file表示將命令結果以二進制格式存放在文件中,file 是文件名。
options 為命令行選項,sar命令常用選項如下:
-A:所有報告的總和
-u:輸出CPU使用情況的統(tǒng)計信息
-v:輸出inode、文件和其他內(nèi)核表的統(tǒng)計信息
-d:輸出每一個塊設備的活動信息
-r:輸出內(nèi)存和交換空間的統(tǒng)計信息
-b:顯示I/O和傳送速率的統(tǒng)計信息
-a:文件讀寫情況
-c:輸出進程統(tǒng)計信息,每秒創(chuàng)建的進程數(shù)
-R:輸出內(nèi)存頁面的統(tǒng)計信息
-y:終端設備活動情況
-w:輸出系統(tǒng)交換活動信息
轉載本文需注明來源。
解決性能測試這個問題,我們可以分為三大步:
第一步:了解性能測試
第二步:熟悉性能測試流程
第三步:從性能測試原理分析性能測試流程和相關的技術知識
下面我們詳細介紹
1.為什么要做性能測試?
1.1 這里提供了2個案例:
示例1:
游戲行業(yè):某游戲上線新功能,目標是全服游戲群體,結果上線后,先后出現(xiàn)了服務器崩潰,游戲功能圖標加載緩慢等問題,導致玩家怨聲載道,為此,游戲運營商不得不發(fā)放了許多獎勵。具體損失不表,為趕進度而發(fā)布的功能,也因為生產(chǎn)事故導致延期更長的時間
這就是典型的沒有進行性能測試,或者說性能測試不充分導致出現(xiàn)的生產(chǎn)事故。在游戲行業(yè)還比較好,畢竟損失的只是虛擬的貨幣和玩家的游戲熱情,但是在傳統(tǒng)行業(yè)呢?
示例2:
傳統(tǒng)航空行業(yè):2019年9月5日,波音777X飛機在壓力測試的過程中,艙門炸毀。
如果,波音的777X飛機沒有經(jīng)過壓力測試就試飛了,那么當遇到同樣的條件時,艙門必然炸毀,整個飛機就會直接暴露到高空低壓低氧的環(huán)境,全飛機的人生存將會受到直接威脅。
通過這兩個案例,我們知道,在一些極限的場景下,軟/件和硬件會造成極大的破壞和損失,因此,我們需要進行性能測試,來驗證軟件在高壓力下,高并發(fā)下,高負載下的實際工作情況。
2. 什么是性能測試?
性能測試就是模擬一些極端場景,對軟/硬件性能進行測試,判斷其極限性能和在極限性能邊界上的運行狀態(tài)。
性能測試主要分為前端性能,網(wǎng)絡性能和后端性能
? 前端性能:是指對前端相關的數(shù)據(jù)指標進行測試,主要是HTTP請求,JavaScript,多媒體數(shù)據(jù),CDN,緩存等進行測試,主要關注響應時間。一般優(yōu)化方向是,縮小數(shù)據(jù)包,提高緩存命中率,即時響應。
? 網(wǎng)絡性能:是指數(shù)據(jù)包在網(wǎng)絡中傳播時的性能,主要關注網(wǎng)絡帶寬,網(wǎng)絡吞吐量,網(wǎng)絡延時,丟包率等指標。
? 后端性能:前端發(fā)起請求后,經(jīng)過的各類中間件和服務器處理的性能。比如:apache、nginx、rabbitmq、storm、zookeeper、dubbo、mysql數(shù)據(jù)庫等。主要關注TPS(Transaction Per Second 每秒事務請求數(shù)),CPU,內(nèi)存,交換內(nèi)存,IOPS(IO吞吐量),TCP連接數(shù)等指標)
3.性能測試的目標
總之,性能測試的目的,就是為了提前發(fā)現(xiàn)軟/硬件的瓶頸,從而可以進行評估和改進的一種測試。
本文重點介紹軟件性能測試中的后端性能測試。
本章節(jié)主要是為了介紹常用的性能測試流程
性能測試流程可以簡單的劃分為4個階段:
? 性能需求分析階段
? 準備階段
? 執(zhí)行階段
? 報告和總結階段
性能需求分析階段
? 熟悉項目相關的資源,如:架構設計,軟/硬件環(huán)境配置,線上業(yè)務運營數(shù)據(jù)(交易量、用戶活躍度、請求分布等等)
? 根據(jù)運營數(shù)據(jù)或者指標,確定性能測試要達到的目標,如:支持xx用戶并發(fā),TPS達到多少,響應時間達到多少,還有CPU,網(wǎng)絡,IO的負載情況等等
? 設計性能測試計劃:與功能測試計劃差不多,主要對以下內(nèi)容進行設計(根據(jù)實際情況設計,比如有的公司只看結果,就可以省略許多不必要的文案說明):
– 項目背景
– 項目結構
– 測試功能/范圍
– 軟/硬件資源準備和對比
– 技術術語
– 時間/人力安排
– 度量方式
– 準入準出條件
– 各階段需要接收和交付的文檔
– 壓測工具和監(jiān)控工具
– 風險項
– 其他
? 設計性能測試場景
主要有以下場景:
– 基準測試:了解系統(tǒng)在靜置時的資源消耗,如cpu,io,網(wǎng)絡帶寬,網(wǎng)絡連接的情況。如果有干擾,務必排除。
– 單次連續(xù)請求測試:1次連續(xù)請求情況下的tps,響應時間,服務器資源消耗情況,主要用于參考。
– 負載測試:逐漸增加并發(fā)請求數(shù),查看tps,響應時間,錯誤率,服務器資源消耗情況,主要用于分析最大性能。
– 壓力測試:在最大性能的臨界點上保持壓力進行測試,查看服務器在高壓力情況的處理情況。
– 穩(wěn)定性測試:連續(xù)xx天內(nèi),在一定的并發(fā)下進行測試,查看服務器運行情況是否能達到需求設計
準備階段
? 搭建性能測試環(huán)境
? 設計性能測試用例
? 準備測試數(shù)據(jù)
? 編寫測試腳本
執(zhí)行階段
? 運行性能監(jiān)控工具
? 按照測試場景,執(zhí)行測試用例。
? 分析:分析性能瓶頸,針對不同的業(yè)務場景,分析的側重點也不一樣,比如計算密集型,IO密集型的業(yè)務,還有線程鎖,垃圾回收機制等等
? 調(diào)優(yōu)
結果階段
? 總結測試結果,輸出性能測試報告
本章節(jié),主要是通過性能測試的原理,了解性能測試需要使用的各方面的知識和技術。
性能測試原理介紹:
性能測試,本質(zhì)就是模擬客戶端請求,對服務器進行高并發(fā),高流量的壓力測試,從而驗證服務器提供服務的能力,并找出瓶頸點,提出或者進行優(yōu)化。
問題:
1. 怎么模擬高并發(fā),高流量?
2. 怎么進行性能優(yōu)化?
1. 怎么模擬高并發(fā):
– 使用多線程技術,模擬高并發(fā)。
– 如果并發(fā)太高,如10w并發(fā)以上,則需要使用負載均衡和分布式處理技術,jmeter工具支持多臺機器作為負載機。
2. 怎么模擬高流量:
– 在每個請求中塞入大量數(shù)據(jù)即可
3. 怎么進行性能優(yōu)化
– 這是個大問題,下文《怎么進行性能優(yōu)化》會有更詳細的講解
那么怎么提升性能呢?我們首先介紹一個衡量性能標準的一個參數(shù):TPS(Transaction Per Second 每秒事務請求數(shù))。
我們再看一下TPS計算公式:
TPS=總請求數(shù)/ 平均響應時間
總請求數(shù):在一段時間內(nèi)發(fā)送的所有請求數(shù)量
平均響應時間:所有請求的平均響應時間
通過這個公式,我們可以知道,當分母越小時,TPS越大。所以要提升性能,我們只需要提高平均響應時間就可以了。那么怎么減少平均響應時間呢?
我們先看一個客戶端到服務器的請求流程圖:
圖中,客戶端發(fā)送請求經(jīng)過了互聯(lián)網(wǎng)到服務器,服務器經(jīng)過內(nèi)部處理,從數(shù)據(jù)庫中讀取了數(shù)據(jù),然后把數(shù)據(jù)返回給客戶端。這過程中,經(jīng)歷的時間大致可以分為:C1+T1+T2+T3+N2+T4+T5。
所以,要把平均響應時間縮小,我們只需要縮小這8個時間就夠了,其中主要包括:
? 網(wǎng)絡時間(T1+T2+T3+T4+T5),
? 服務器內(nèi)部處理時間(N1),
? 數(shù)據(jù)庫處理時間(N2),
? 客戶端處理時間(C1)。
所以我們可以就可以從這三個方向去優(yōu)化:提高網(wǎng)絡傳輸速率,服務器內(nèi)部處理速率,數(shù)據(jù)庫處理速率,客戶端處理速率,其中客戶端處理速度也和服務端優(yōu)化策略基本相同
性能優(yōu)化:
網(wǎng)絡傳輸速率的提高:
1,采用光纖,配置路由表,縮短網(wǎng)絡傳輸距離與路由器躍點數(shù)量。
2,如果是實時服務,那么需要配置緩存服務器,盡量避免緩存穿透
服務器內(nèi)部處理速率的提高:
1. 計算密集型:優(yōu)化思路是提高CPU利用率,采用多線程的思路進行。但是線程數(shù)量不能超過cpu核心數(shù)。因為線程數(shù)量超過cpu核心數(shù)后,cpu會分片執(zhí)行超過部分的線程,會增加cpu讀取線程緩存的壓力,使計算能力下降
2. IO密集型:
– 優(yōu)化思路是提高存儲的效率,如使用固態(tài)硬盤,陣列,分布式等技術。
– 由于IO密集型中,CPU可能會等待IO操作完成。所以我們可以使用超過CPU核心數(shù)的線程來訪問IO,從而提高性能(但如果磁盤繁忙,線程數(shù)再多也只是在磁盤隊列中排隊,增加CPU線程數(shù)來訪問IO的方法,適用于IO讀/寫操作并不繁忙,但是需要長時間尋址的場景)
– 注意:因為磁盤內(nèi)部只有1個線程處理IO操作,所以要真正實現(xiàn)磁盤的并發(fā),需要使用多個磁盤,也就是磁盤陣列
數(shù)據(jù)庫處理速率:
? 數(shù)據(jù)庫直接和IO進行交互,所以提高IO性能,能提高數(shù)據(jù)庫性能。
? 數(shù)據(jù)庫有自己的數(shù)據(jù)結構,所以優(yōu)化數(shù)據(jù)存儲和查詢的相關算法,也能提高數(shù)據(jù)庫性能
? 索引優(yōu)化
? 緩存優(yōu)化
? 數(shù)據(jù)庫連接優(yōu)化
? 數(shù)據(jù)庫查詢語句優(yōu)化
? 分表分庫
? 分布式處理
性能優(yōu)化方向也可以用一個思維導圖來表示:
硬件優(yōu)化:加cpu升級,cpu陣列;使用ssd固態(tài)硬盤;主板用最先進的,內(nèi)存用最高的,網(wǎng)絡用專線等等。
操作系統(tǒng)優(yōu)化:
? windows操作系統(tǒng),去掉不需要的服務,根據(jù)實際業(yè)務場景調(diào)整線程,虛擬內(nèi)存,緩存的大小等相關配置項,需要專業(yè)人士操作
? Linux操作系統(tǒng):與windows基本相同
中間件優(yōu)化:根據(jù)不同的業(yè)務場景,選擇不同的中間件,調(diào)整配置等等,如nginx中啟用的cpu核心數(shù)量等等
架構優(yōu)化:采用分布式存儲架構,分布式服務器架構,負載均衡等
代碼優(yōu)化:許多問題都是代碼的問題,如果代碼問題能準確定位,可以考慮優(yōu)化代碼。
數(shù)據(jù)庫優(yōu)化:優(yōu)化索引,配置,數(shù)據(jù)庫連接,算法等等
算法優(yōu)化:這個不提了,算法屬于底層的優(yōu)化,需要非常扎實的計算機基礎知識和優(yōu)秀的邏輯思維以及靈感
其他:線程,進程,網(wǎng)絡等等
性能監(jiān)控
我們要分析數(shù)據(jù),就必須得到數(shù)據(jù),所以需要性能監(jiān)控工具來采集和展示數(shù)據(jù),才能進行分析。
那么我們要怎么進行監(jiān)控呢?這里我們可以借助已經(jīng)實現(xiàn)的工具來進行。
Linux:
? 可以使用sysstat工具包中的sar命令來監(jiān)控CPU,內(nèi)存,IO,網(wǎng)絡的運行情況,具體用法參考:http://lovesoo.org/linux-sar-command-detailed.html
? 可以使用ps命令查看線程運行情況
JAVA:可以使用jstack,jprofile,jstat,jmap,jps工具來進行查看,這是java自帶的工具包,用于分析java的堆棧信息
Windows:
? 可以使用widnows自帶的資源監(jiān)視器監(jiān)控和采集數(shù)據(jù)
數(shù)據(jù)庫監(jiān)控:
? mysql數(shù)據(jù)庫有自帶的監(jiān)控工具,但是收費
? 可以使用免費的工具進行監(jiān)控,如innotop
? 可以使用綜合能力強大的工具監(jiān)控,如zabbix(也能監(jiān)控服務端)
其他:
? 前端性能監(jiān)控:Yslow,谷歌開發(fā)者模式->performance,使用windows.performance 進行定制化開發(fā)
? Android監(jiān)控:
– 網(wǎng)易開源的Emmagee,
– 騰訊開源的GT,
– 科大訊飛的iTest,
– Google的開源Battery
– 自己開發(fā)
? IOS監(jiān)控:
– 自己開發(fā),參考:http://www.cocoachina.com/articles/19680
? 服務器中間件:nginx,apache,dubbo,redis,kafka等
看到需要學習這么多技術,可能會讓大家感到許多壓力。但是大家不用慌,這里介紹一個開源的性能測試工具,功能強大也好用,不滿意還可以二次開發(fā),它就是jmeter
jmeter可以很好的支持并發(fā)操作,并有內(nèi)置模塊收集TPS,響應時間等關鍵性能指標。服務端性能也可以使用jmeter插件來實現(xiàn)監(jiān)控,只要掌握jmeter工具的使用和性能測試流程,性能測試就不再遙遠!
想要做好性能測試,的確需要比較扎實的基本功和豐富的應用經(jīng)驗,但是如果想快速入門進行性能測試,可以重點掌握性能測試流程和jmeter工具就可以初步達到要求了。
ighter:吳晉超
From:Beijing,China
(注:lighter為light painter 簡稱)
Lighter旨在中文地區(qū)報道與推廣光繪藝術。我們把light painter 稱之為Lighter ,所以在這個星球上有非常多的Lighters.
Lighter主要在移動互聯(lián)網(wǎng)上進行傳播,包括Lighter移動社區(qū),微信公眾號,微博,,中國主流視頻網(wǎng)站,以及熱門APP等。
吳晉超,隸屬國內(nèi)頂尖汽車廣告公司bitone旗下的原創(chuàng)團隊,是一名導演。本職工作是專注于制作創(chuàng)意短片,光影涂鴉是我個人的興趣愛好。
最早開始制作是在大學快畢業(yè)那會兒,因為我是動畫專業(yè)出身,所以開始就是以動畫的形式來制作光影涂鴉。當初根本沒有想到要商業(yè)化,純粹是做著玩的,但沒想到第一部片子做出來之后沒過多久就有商業(yè)項目找了過來,慢慢的,就當成是一個職業(yè)在做。
來上作品:小U看世界
https://v.qq.com/x/page/g0368thvbaq.html (由于正文只能傳一個視頻只能放鏈接了~~)
這里是吳導的站酷:
http://edoness.zcool.com.cn/
都是詳情干貨哦
我剛接觸光影涂鴉的時候經(jīng)常看德國LICHTFAKTOR的作品。
當時也算是巧合,因為那時候因為學校的關系,我和原德國電影博物館的館長Dr.Rolf一塊共事,我和他提過這個團隊,于是他就幫我寫了一封推薦信,然后我就跟他們聯(lián)系上了,真的很驚訝也很開心。所以我能到今天這步,很大程度是歸功于Dr.Rolf。
關于LICHTFAKTOR這里有大神的官網(wǎng)鏈接:
http://www.lichtfaktor.com/
https://v.qq.com/x/page/v0368gotrnj.html
我覺得自己是一個很矛盾又很倔強的人。矛盾是因為我在想一件事的時候會想到好的和壞的一面,好的會激勵我,壞的會阻撓我,而倔強正好能讓我拋開壞的一面,堅持走下去。如果不是因為這些,我的作品也不可能出現(xiàn)。
除了光繪之外,平時我和我的團隊都在做一些創(chuàng)意短片,實拍和動畫CG結合的。之前我們已經(jīng)做出了很多反響還不錯的作品。
未來的一年,我們打算結合各種手段和技術,去嘗試制作一些列的短片,具體的題材還沒有想好。因為現(xiàn)在我們剛加入Bitone,那里有很多新鮮以及很厲害的技術,所以我們需要一定時間去消化,然后將這些技術融入到我們的片子里邊。當然,光影涂鴉我們也會繼續(xù)下去。因為光影涂鴉受表現(xiàn)形式所束縛,所以很難在片子當中體現(xiàn)完整的故事性,這塊我們會繼續(xù)作出改變,以及在光的形態(tài)上我們會做更多的研究。
因為我對于動態(tài)的東西很感興趣,相比于照片來說,當然照片能表現(xiàn)的細節(jié)更多,但我覺得動態(tài)的東西能夠給人帶來活力。所以一直以來我都是在做動畫,當然,在每次制作之前我們都會以照片的形式來呈現(xiàn)一些關鍵畫面,盡可能多的在畫面里表現(xiàn)出需要的東西。
我覺得最有趣的就是和大家一起全身心投入到一件事情上,
吳導與團隊在一起創(chuàng)作:
那個時候能感覺到大家的心是在一塊的,雖然問題很多,但我們都會一一想辦法解決。而且在拍片的過程中并不是枯燥無味的,會發(fā)生很多意想不到的事情,這就和光影涂鴉一樣,我們不知道下一張會畫出什么東西,所以滿懷期待。
下面來欣賞下吳導為NEWBLANCE創(chuàng)作的光繪動畫!
<script src="https://lf3-cdn-tos.bytescm.com/obj/cdn-static-resource/tt_player/tt.player.js?v=20160723"></script>
我覺得最難的就是如何構思出一個故事情節(jié)吧,因為我覺得光影涂鴉雖然是一種視覺藝術,但觀眾看多了,還是會感覺到疲憊,所以有一定的故事性會更吸引人,所以每次做片子,前期是需要花費很長時間的,有的時候比拍攝的時間還有長。而且還需要考慮每一個鏡頭的銜接是否順暢,我覺得這也是我們和別的光影涂鴉團隊不同的地方吧。
所謂題材和靈感其實來自客戶啦,因為現(xiàn)在我們已經(jīng)將光影涂鴉商業(yè)化,需要去為客戶定制一些東西。
通常我們的周期在一個月左右,前期大概花掉一兩周,拍攝一周,后期一周左右。在此之前我們的道具非常簡單,僅僅是一些手電,熒光棒及Led燈。更多的是根據(jù)不同的內(nèi)容去將這些道具做成自己想要的道具,所以每次都會花很多時間在這上邊。
下面來欣賞下吳導第一支光繪動畫! (由于正文只能傳一個視頻只能放鏈接了~~)
https://v.qq.com/x/page/q035002sar3.html
我有挺多的興趣愛好,我最喜歡做的還是出門走走,我希望我的生活就是在旅途中度過,累了就回家休息一下。俗話說,讀萬卷書不如行萬里路,當然不是說不讀書啦,讀書還是非常必要也是最便宜的一種學習方式。但我更希望出去走走,因為這樣我能夠切身體會到這個世界,而不是聽別人說或是從哪看到。而且我覺得,很多時候靈感是來自生活的,只有當我們真正體會到生活,才能將其轉換,變成我們作品中的一部分。所以我想睡遍全世界的旅館,我想飛過所有的天空,我想這個世界少了我會很無聊。
其實沒什么偶像,我僅僅是羨慕能夠讓生活變得有趣的人。
最后我想對各位Lighter說:堅持你想做的事,總會看到你想要的結果。
本次專訪由 Lighter:俊仔 采訪
如果你也想成為Lighter記者或者加入Lighter,那就馬上聯(lián)系俊仔吧 ,先填飽肚子,努力干活,饅頭的味道才會好,饅頭的味道好了,人活著就有意義了。
jacky@imlighter.com 微博:俊仔junzai(請注明在公眾號上看到的)
謝謝大家來捧場,這里有本店推出的光繪練級裝備,請問你現(xiàn)在幾級?什么新手?那千萬別買,你媽會打你的。
*請認真填寫需求信息,我們會在24小時內(nèi)與您取得聯(lián)系。