日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

性能瓶颈分析整体思路

發布時間:2024/4/15 编程问答 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 性能瓶颈分析整体思路 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

一、web應用的性能分析

1、首先,確定整體瓶頸在哪

依據請求的流程,可大致分為 前端 -> 網絡?-> 后端 三段。其中前端性能這里不做討論,網絡的話,測試性能的時候最好保持網絡干擾最小。

2、其次,確定后端瓶頸在哪

后端處理一條請求時,大概會經過 應用程序 -> 中間件 -> 應用程序 -> 數據庫?4段,其中中間件可能有也有可能沒有。

3、最后,逐步分析每個地方的瓶頸

分析應用程序、中間件、數據庫瓶頸時,重要原則就是:CPU -> 內存 -> 網絡 -> 磁盤(性能最慢的設備會是瓶頸點)

1)應用程序瓶頸:

  • CPU:應用程序運行在內存中,性能開銷一般是CPU閑置導致,所以增加多線程提高CPU利用率是最快的提升性能的方法。
  • 內存:減少鏈表等需要內存尋址的操作
  • 網絡:避免在for循環中建立網絡連接,以及等待磁盤IO
  • 磁盤:避免在for循環中等待磁盤IO

2)中間件瓶頸:

? ? ? 中間件大多為第三方產品,提高硬件設備性能是唯一的辦法:建立集群(增加機器數量)、使用多核CPU、增加內存、使用千兆網卡和網線、使用固態硬盤等

3)數據庫瓶頸:

  • 磁盤:數據庫的數據存在磁盤中,與磁盤進行IO交互是消耗性能最多的地方,減少磁盤訪問可以最顯著的提升效率(建立索引,優化sql,避免全盤掃描
  • 網絡:如果數據庫是獨立部署的,網絡傳輸是第二大消耗性能的地方,批量傳輸數據減少網絡交互,分頁技術減少返回數據都可以優化該處性能

二、Linux服務器性能分析—CPU

1、首先要確定CPU基礎信息

使用lscpu命令查看 CPU配置信息。在 Linux 下,類似 lsxxx 這樣的命令都是用來查看基本信息的,如 ls 查看當前目錄文件信息,lscpu 就用來查看 CPU 信息,類似還有 lspci 查看 PCI 信息。

  • Architecture: #架構?
  • CPU(s): #邏輯cpu顆數?
  • Thread(s) per core: #每個核心的線程數量?
  • Core(s) per socket: #每顆物理CPU的核數
  • CPU socket(s): #物理CPU個數?
  • Vendor ID: #cpu廠商ID?
  • CPU family: #cpu系列?
  • Model: #型號?
  • Stepping: #步進?
  • CPU MHz: #cpu主頻?
  • Virtualization: #cpu支持的虛擬化技術?
  • L1d cache: #一級緩存(google了下,這具體表示表示cpu的L1數據緩存)?
  • L1i cache: #一級緩存(具體為L1指令緩存)?
  • L2 cache: #二級緩存

2、計算cpu核數

  • CPU總核數 =物理CPU個數 * 每顆物理CPU的核數 =2*4=8
  • 總邏輯CPU數=物理CPU個數 * 每顆物理CPU的核數 * 超線程數* 復用比=2*4*2=16

一個核心就是一個物理線程,英特爾有個超線程技術可以把一個物理線程模擬出兩個線程來用,充分發揮CPU性能。

3、CPU 使用情況分析

使用top命令查看cpu的使用情況

重點關注這么幾個字段:

1)load average三個數字分別表示最近 1 分鐘,5 分鐘和 15 分鐘的負載,數值越大負載越重。一般要求不超過核數,比如對于單核情況要 < 1。如果機器長期處于高于核數的情況,說明機器 CPU 消耗嚴重了。

2)%Cpu(s):表示當前 CPU 的使用情況,如果要查看所有核(邏輯核)的使用情況,可以按下數字 “1” 查看。這里有幾個參數,表示如下:

  • - us 用戶空間占用 CPU 時間比例
  • - sy 系統占用 CPU 時間比例
  • - ni 用戶空間改變過優先級的進程占用 CPU 時間比例
  • - id CPU 空閑時間比
  • - wa IO等待時間比(IO等待高時,可能是磁盤性能有問題了)
  • - hi 硬件中斷
  • - si 軟件中斷
  • - st steal time

3)每個進程的使用情況

這里可以羅列每個進程的使用情況,包括內存和 CPU 的,如果要看某個具體的進程,可以使用 top -p pid 查看。

三、Linux服務器性能分析—內存

1、使用free命令查看內存使用情況

這里存在一個計算公式,?還有個?shared?字段,這個是多進程的共享內存空間,不常用

MemTotal = used + free + buff/cache(單位 K)

我們注意到 free 很小,buff/cache 卻很大,這是 Linux 的內存設計決定的,Linux 的想法是內存閑著反正也是閑著,不如拿出來做系統緩存和緩沖區,提高數據讀寫的速率。但是當系統內存不足時,buff/cache 會讓出部分來,非常靈活的操作。

2、內存使用情況分析

使用top 命令查看內存使用情況。運行時默認是按照 CPU 利用率進行排序的,如果要按照內存排序,該怎么操作呢?兩種方法,一種直接按 “M”(相應的按 “P” 是 CPU),另外一種是在鍵入 top 之后,按下 “F”,然后選擇要排序的字段,再按下 “s” 確認即可。

可以看到,我按照 “%MEM” 排序的結果。這個結果對于查看系統占用內存較多的哪些進程是比較有用的。

然后這里我們會重點關注幾個地方,上面橫排區,和前面幾個命令一樣可以查看系統內存信息,中間標注的橫條部分,和內存相關的有三個字段:VIRT、RES、SHR。

  • VIRT:virtual memory usage,進程占用的虛擬內存大小。
  • RES:resident memory usage,進程常駐內存大小,也就是實際內存占用情況,一般我們看進程占用了多少內存,就是看的這個值。
  • SHR:shared memory,共享內存大小,不常用。

參考文章:

一文掌握 Linux 性能分析之內存篇

如何查看Linux的內存使用狀況

總結

以上是生活随笔為你收集整理的性能瓶颈分析整体思路的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。