- 性能優化是什麼?
1.1 性能優化就是發揮機器本來的性能 - 性能的幾個唯度
1.1.1 CPU
命令 vmstat
http://www.man7.org/linux/man-pages/man8/vmstat.8.html
首先檢查 cpu,cpu 使用率要提升而不是降低
CPU 空閒並不一定是沒事做,也有可能是鎖或者外部資源瓶頸。
命令 Top
http://man7.org/linux/man-pages/man1/top.1.html
1.1.2 IO
命令 iostat
http://www.man7.org/linux/man-pages/man1/iostat.1.html
1.1.3 Memory
命令 free
http://www.man7.org/linux/man-pages/man1/free.1.html
1.1.4 Network
命令 nicstat (需要安裝)
wget http://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
1.1.5 監控軟件
https://www.zabbix.com/documentation/2.0/manual/appendix/api/api
zabbix nagios prometheus - 術語
吞吐量:對單位時間內完成的工作量的度量
平均響應時間:提交請求和返回該請求的響應之間使用的時間
平均響應時間越短,系統吞吐量越大;平均響應時間越長,系統吞吐量越
小;但是,系統吞吐量越大,未必平均響應時間越短;因爲在某些情況(例
如,不增加任何硬件配置)吞吐量的增大,有時會把平均響應時間作爲犧牲,
來換取一段時間處理更多的請求。
tps: Transactions per Second
qps: Queries per Second - 補充
CPU 負載高怎麼定位:
A. top 找到 CPU 高的進程 (原理:方法是由線程執行的,線程是在進程下的,找
到進程下 cpu 最高的線程就能定位到方法)
B. Shift + H 切換到線程模型 找到線程執行 cpu 高的線程號
C. Jstack pid > p.txt 用 jstack 導出線程的 dump (記住這個問題有時候沒有那麼明顯
一直 cpu100%,可能是間歇性的 cpu 高所以這個能抓住這個線程還是要看運氣)
D. 把線程號轉 16 進制 printf “%x \n” 40437
F. 到剛剛導出的 p.txt 裏面檢索定位到