摘要:如果有人負責把控從相對長遠些的角度設計系統(tǒng)的迭代,這種情況本是可以避免的優(yōu)化辦法只有一個就是保留主鏈路,旁支鏈路異步化。這會導致一次被動讀磁盤,性能損耗會很大。
在并發(fā)量一定的情況下如何對系統(tǒng)響應時間進行詳細分析
分析步驟
1.1 在關鍵點位添加日志信息 -> 縮小目標范圍
a) 主要函數(shù)耗時
b) 訪問外部系統(tǒng)耗時:DB、MQ、Cache、FileSystem、RPC、HTTP等
c) 接口內不同邏輯耗時百分比/絕對值
1.2 詳細分析瓶頸出現(xiàn)原因
a) 技術層面:優(yōu)先考慮
b) 業(yè)務邏輯:業(yè)務邏輯改造一般影響較大、耗時較長,優(yōu)先級低
1.3 針對性解決問題
一旦定位了問題原因,解決問題的方法都相當容易
技術層面
2.1 代碼實現(xiàn)
a) 串行邏輯是否可以并行化
b) 串行請求是否可以批量(batch)請求
c) SQL是否需要優(yōu)化
d) 算法復雜度是否需要優(yōu)化
e) 語言核心庫是否提供了性能更高的使用方式
f) 引用的第三方庫是否存在性能問題
g) 每次外部請求是否都重新建立連接
2.2 內核/硬件層面
a) CPU使用率
b) 內存使用率
c) 磁盤IO狀況
d) 網(wǎng)絡狀況
d) 瓶頸是否由調用的內核函數(shù)引起?
該函數(shù)是如何工作的;新版本內核是否已經(jīng)對此優(yōu)化;如何調整使用方式可以更高效
2.3 日志
線程會爭奪日志鎖,在高并發(fā)情況下,同步寫日志很影響性能。異步寫又可能引起OOM。
業(yè)務邏輯
隨著業(yè)務的增長,接口負擔的功能原來越復雜,邏輯鏈路越來越長,事務越來越大,性能越來越差,越來越?jīng)]辦法維護。(如果有人負責把控、從相對長遠些的角度設計系統(tǒng)的迭代,這種情況本是可以避免的)
優(yōu)化辦法只有一個就是:保留主鏈路,旁支鏈路異步化。
常用工具
4.1 內核
a) CPU: top、vmstat htop w uptime dstat
b) MEM: top、free
c) disk IO: iostat
例: iostat -kx 1 //每秒統(tǒng)計一次io
iotop -o //查看磁盤使用率較高的進程
d) 網(wǎng)絡
流量:sar -n DEV 1 3 //每秒統(tǒng)計一次所有網(wǎng)卡流量,共3次
網(wǎng)絡抓包: tmpdump,可配合tmptrace、wireshark分析
TCP連接狀況:netstat -an | grep TIME_WAIT //client端近期關閉tcp連接數(shù)量
e) 查看/proc/xxx中的系統(tǒng)詳細信息
小知識
a) 網(wǎng)絡抖動引起tcp重傳,一般內部系統(tǒng)之間的調用,linux設置的重傳時間間隔為至少200ms以上。
b) 服務之間通過網(wǎng)絡調用,網(wǎng)絡開銷在500us ~ 2ms
c) 機械磁盤尋址: 20ms
d) 磁盤的某page中如果存在數(shù)據(jù),程序寫此page時如果不會填充整個page,內核會先載入整個page,再輸出整個page,保證磁盤數(shù)據(jù)不丟。這會導致一次被動讀磁盤,性能損耗會很大。否則會直接寫入磁盤高速緩存,間隔固定時間刷盤一次(5s)。
e) 日志使用seaslog buffer
隨著系統(tǒng)并發(fā)量的增加,系統(tǒng)響應時間會逐步下降甚至雪崩,一般是由多線程之間、模塊之間、子系統(tǒng)之間爭奪資源(鎖)引起的。
文章版權歸作者所有,未經(jīng)允許請勿轉載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/62083.html
摘要:端優(yōu)談談關于前端的緩存的問題我們都知道對頁面進行緩存能夠有利于減少請求發(fā)送,從而達到對頁面的優(yōu)化。而作為一名有追求的前端,勢必要力所能及地優(yōu)化我們前端頁面的性能。這種方式主要解決了淺談前端中的過早優(yōu)化問題過早優(yōu)化是萬惡之源。 優(yōu)化向:單頁應用多路由預渲染指南 Ajax 技術的出現(xiàn),讓我們的 Web 應用能夠在不刷新的狀態(tài)下顯示不同頁面的內容,這就是單頁應用。在一個單頁應用中,往往只有一...
摘要:在本文中我將會介紹應用性能優(yōu)化的一般原則。性能優(yōu)化的流程圖摘取自和合著的性能,描述了應用性能優(yōu)化的處理流程。例如,對每臺服務器,你面臨著為單個分配堆內存和運行個并為每個分配堆內存的選擇。不過位能使用堆內存最大理論值只有。 原文鏈接:http://www.cubrid.org/blog/dev-platform/the-principles-of-java-application-per...
摘要:淺談網(wǎng)站性能之前端性能優(yōu)化性能優(yōu)化的目的無非是減少用戶流量消耗,提升用戶首屏體驗,提升用戶訪問速度,讓用戶專注內容本身。前端性能優(yōu)化減少請求數(shù)量基本原理在瀏覽器與服務器進行通信時,主要是通過進行通信。 最近項目慢慢走上正軌,需求趨于平穩(wěn),這才想起需要對整站進行性能優(yōu)化。經(jīng)過一段時間的學習,結合現(xiàn)在項目的實際性能情況,發(fā)現(xiàn)確實有許多地方可以進行優(yōu)化。于是就開始了我的前端性能優(yōu)化之旅。以下...
摘要:淺談網(wǎng)站性能之前端性能優(yōu)化性能優(yōu)化的目的無非是減少用戶流量消耗,提升用戶首屏體驗,提升用戶訪問速度,讓用戶專注內容本身。前端性能優(yōu)化減少請求數(shù)量基本原理在瀏覽器與服務器進行通信時,主要是通過進行通信。 最近項目慢慢走上正軌,需求趨于平穩(wěn),這才想起需要對整站進行性能優(yōu)化。經(jīng)過一段時間的學習,結合現(xiàn)在項目的實際性能情況,發(fā)現(xiàn)確實有許多地方可以進行優(yōu)化。于是就開始了我的前端性能優(yōu)化之旅。以下...
閱讀 2398·2021-11-23 09:51
閱讀 1209·2021-11-22 13:54
閱讀 3422·2021-09-24 10:31
閱讀 1066·2021-08-16 10:46
閱讀 3619·2019-08-30 15:54
閱讀 700·2019-08-30 15:54
閱讀 2886·2019-08-29 17:17
閱讀 3154·2019-08-29 15:08