http://zhulongchao.com/blog/performance-trace.html
1.網速測試
安裝iperf
yum install epel-release 從epel源中安裝 yum install -y iperf
帶寬檢測
iperf -s 開啟服務端 iperf -c ip

丟包問題
tcpdump進行抓包 tcpdump -i eth0 -s 3000 port 8080 -w /home/tomcat.pcap 對于抓包文件采用wireshark進行分析 丟包(TCP DUP ACK) 重傳(retransmission),超時重傳,
2.cdn性能測試
cdn 緩存,回源問題 304請求,瀏覽器是否使用本地緩存。比較last_modified 和if_modified_since 通過實踐戳來判斷,瀏覽器緩存和cdn緩存

3.DNS基礎
路由解析
泛域名解析
4.分布式服務鏈路追蹤

http入口產生一個traceId 分發到rpc調用,cache,db,jms調用鏈路中 google的著名論文dapper和zipkin 日志聚合,綁定鏈路日志和業務日志 采樣采集,慢請求,異常服務。 日志量大。日志異步寫入,環狀數組,日志組件自研 共享信息放在ThreadLocal中。比如traceId
5.網卡性能問題定位
tsar -l -i 1 --traffic 查看網卡的進出流量
6.CPU性能問題定位
tsar -l -i 1 --cpu 軟件問題定位,perf 采樣所有進程數據 perf record -F 99 -a -g -- sleep 30 java進程的函數map:java -cp attach-main.jar:$JAVA_HOME/lib/tools.jar net.virtualvoid.perf.AttachOnce PID 輸出函數和地址的map 輸出火焰圖 perf script | stackcollapse-perf.pl | flamegraph.pl --color=java --hash > flamegraph.svg

7.內存性能問題定位
-堆內內存問題,
采用jmap dump內存,采用離線工具分析 jprofile、mat
-堆外內存問題
a.google-perftools
yum install -y google-perftools graphviz export LD_PRELOAD=/usr/lib64/libtcmalloc.so.4 export HEAPPROFILE=/home/testGperf.prof 執行程序,結束程序,生成prof 分析prof 生成svg, pdf,text pprof --svg $JAVA_HOME/bin/java testGperf.prof.0001.heap > test.svg pprof --pdf $JAVA_HOME/bin/java testGperf.prof.0001.heap > test.pdf pprof --text $JAVA_HOME/bin/java testGperf.prof.0001.heap > test.txt
b.jemalloc定位(優勢,適合長時間trace)

sudo apt-get install graphviz 編譯安裝 ./configure –enable-prof –enable-stats –enable-debug –enable-fill make make install
運行配置 export MALLOC_CONF=”prof:true,prof_gdump:true,prof_prefix:/home/jedump/jez,lg_prof_interval:30,lg_prof_sample:17”
export LD_PRELOAD=/usr/local/lib/libjemalloc.so.2 運行 java -jar target/spring-boot-jemalloc-example-0.0.1-SNAPSHOT.jar
jeprof –show_bytes –svg jez.*.heap > app-profiling.svg
注明:如果在docker容器中,推薦用pprof,jemalloc只顯示函數地址,不顯示函數名
8.機器資源配額問題
/etc/security/limits.conf
- soft nofile 65536
- hard nofile 65536
控制該用戶文件句柄數
9.磁盤性能問題定位
tsar -l -i 1 –io