1. 性能優(yōu)化是什么?
1.1 性能優(yōu)化就是發(fā)揮機器本來的性能
2. 性能的幾個唯度
2.1. CPU
命令 vmstat(- vmstat 虛擬內(nèi)存性能監(jiān)控枫攀、CPU監(jiān)控(進程上下文切換、CPU利用率)?)
http://www.man7.org/linux/man-pages/man8/vmstat.8.html
首先檢查 cpu,cpu 使用率要提升而不是降低
CPU 空閑并不一定是沒事做蹦掐,也有可能是鎖或者外部資源瓶頸笤闯。
命令 Top(- top 系統(tǒng)負載、CPU使用率颗味、各個進程的詳細報告(CPU使用率浦马、內(nèi)存使用情況))
http://man7.org/linux/man-pages/man1/top.1.html
2.1.1CPU 負載高定位步驟
1.top 找到 CPU 高的進程 (原理:方法是由線程執(zhí)行的晶默,線程是在進程下的,找 到進程下 cpu 最高的線程就能定位到方法)
2.拿到線程號之后用jvm命令(jstack+線程號)捕捉CPU使用率高的線程的dump(需要注意的是top中必須是線程號非進程號趴梢,因為jstack只能捕捉線程币他,在top命令下可shift+H切換線程模型)
3.將線程號(PID)轉(zhuǎn)為16進制
4.在vi編輯器在打開存有線程信息的文本(a.txt),輸入轉(zhuǎn)換后的PID即nid地位到異常信息
2.2. memory
命令 free
http://www.man7.org/linux/man-pages/man1/free.1.html
兩者都是RAM中的數(shù)據(jù)彰阴。簡單來說拍冠, buffer是即將要被寫入磁盤的庆杜, cache是被從磁盤中讀出來的。這二者是為了提高IO性能的欣福,并由OS售理拓劝,并非應用自己分配的內(nèi)存雏逾,而是OS自己根據(jù)需要對空閑內(nèi)存進行的額外利用。因為這部分只是綬存郑临,降低IO栖博,提升性能,只要應用程序有需要厢洞,OS可以直接將 buffer寫入磁盤仇让,將 caches刪掉來得到空閑內(nèi)存給應用程序使用。
buffer是用于存儲速度不同步的設(shè)備或優(yōu)先級不同的設(shè)備之間傳輸數(shù)據(jù)的區(qū)域躺翻。緩沖( buffers)是根據(jù)磁盤的讀寫設(shè)計的丧叽,把分散的寫操作集中進行,減少磁盤碎片和硬盤的反復尋道公你,從而提高系統(tǒng)性能踊淳。
cache經(jīng)常被用在磁盤的I/O請求上陕靠,如果有多個進程都要訪問某個文件迂尝,于是該文件便被做成 cache以方便下次被訪問,這樣可提供系統(tǒng)性能剪芥。緩存( cached)是把讀取過的數(shù)據(jù)保存起來垄开,重新讀取時若命中(找到需要的數(shù)據(jù))就不要去讀硬盤了,若沒有命中就讀硬盤税肪。其中的數(shù)據(jù)會根據(jù)讀取頻率進行組織溉躲,把最頻讀取的內(nèi)容放在最容易找到的位置,把不再讀的內(nèi)容不斷往后排益兄,直至從中刪除签财。
因此:
-/+ buffers/ cacher的含義即:使用內(nèi)存是實際當前使用內(nèi)存減去 buffers/ cache之和;空閑內(nèi)存是實際空閑內(nèi)存加上 buffers/ cache.之和偏塞。所以是-/+
查看空閑內(nèi)存唱蒸,確定應用是否有內(nèi)存池測時,只能以free的第三行為依據(jù)灸叼,第二行其實作用不大?只是可以看到0S當前的buffer和 cache大小
2.3. IO
命令 iostat
http://www.man7.org/linux/man-pages/man1/iostat.1.html
%util表示IO這一時刻對CPU的占有率
2.4. network
命令 nicstat (需要安裝)
wgethttp://sourceforge.net/projects/nicstat/files/nicstat-1.92.tar.gz
tar -zxvf nicstat-1.92.tar.gz
sudo vim Makefile
CFLAGS = $(COPT) -m32#將此行修改為如下: CFLAGS = $(COPT)
sudo make -f Makefile install