亚洲视频二区_亚洲欧洲日本天天堂在线观看_日韩一区二区在线观看_中文字幕不卡一区

公告:魔扣目錄網為廣大站長提供免費收錄網站服務,提交前請做好本站友鏈:【 網站目錄:http://www.430618.com 】, 免友鏈快審服務(50元/站),

點擊這里在線咨詢客服
新站提交
  • 網站:51998
  • 待審:31
  • 小程序:12
  • 文章:1030137
  • 會員:747

一、系統資源

通常服務器的性能會卡在四個地方:CPU、內存、網絡IO和磁盤IO。

二、性能調優

2.1 CPU

一個好的架構,服務器的CPU總消耗總是平均的分布在各個cpu上,CPU的消耗在70%左右。

1)使用多線程 或多進程編程,充分利用多核CPU。老的線程庫效率太低,需要升級用NPTL 。

2)進(線)程數不要遠超cpu數,減少進程無味的切換。

3)慎重選擇阻塞性IO,阻塞會導致進程切換,浪費CPU資源。

4)事件發生的時間無法估計或比較長,則不應該使用輪詢的方式,盡量用異步方式等待事件就緒。

5)謹慎用鎖,盡量把數據分配到各個線程,減少共享資源,減少競爭,lockfree。

6)類中有聯系的數據盡量放在相鄰的位置,可以放到一個cacheline里。

7)慎用字符串操作,比如sprintf,snprintf,因為%d %s等等都需要CPU資源去做詞法分析,數量多的話,也是不菲的開銷減少系統調用,例如time,主要消耗在用戶態和內核態之間的切換。

8)優化算法,減少遍歷操作。

9)優化架構,把系統管道調整到統一的半徑,解決瓶頸。

10)使用一些靜態池技術,比如內存池,線程池,連接池等,用空間換時間。

一個好的架構,服務器的CPU總消耗總是平均的分布在各個cpu上,CPU的消耗在70%左右。

2.2 內存

程序需要多少內存需要在設計的時候估計清楚,如果占用的內存接近物理內存,將會使用交換分區,影響性能。
2.3 網絡IO

1)使用epoll代替select

2)使用非阻塞的模式來開發

3)減少消息交互次數

4)數據流使用長鏈接

5)優化應用層協議

6) 使用DPDK

2.4 磁盤IO

1)內存中緩存寫入磁盤的數據,批量寫磁盤,減少寫入次數

2)利用順序寫,減少尋道次數

3)內存緩存熱點數據,緩解磁盤讀壓力

4)對磁盤IO密集型的服務使用SSD盤

三、常用工具

3.1 top(CPU&內存)

可以查看系統中運行的進程的狀況,CPU使用狀況,系統負載,內存使用等。它是檢查系統進程運行狀況最方便的工具了,它默認顯示部分活動的進程,并且按照進程使用CPU的多少排序。它可以顯示全部CPU的使用狀況,也可以顯示每個進程都運行在那個CPU上面。

主要可以用top來看哪些進程或者哪類進程占用CPU和內存資源最多,以此迅速定位存在性能問題的進程,以及運行異常的進程。

load average: 0.06, 0.60, 0.48 - 系統負載,即任務隊列的平均長度。 三個數值分別為 1分鐘、5分鐘、15分鐘前到現在的平均值。這個值最好小于0.7,一般大于0.7說明需要調優。

%CPU這個字段在多線程多核的環境中會超過100。

3.2 free(內存)

free命令顯示系統內存的使用狀況(物理內存和交換內存)通過這個命令我們可以看到系統進程實際使用的物理內存,buffer和cache使用的物理內存。

第二行的used/free是OS角度,包括buffer和cache使用的內存。

第三行的used/free是用戶角度,不包括buffer和cache使用的內存。

3.3 vmstat(綜合)

vmstat是一個很全面的性能分析工具,可以觀察到系統的進程狀態、內存使用、虛擬內存使用、磁盤的IO、中斷、上下問切換、CPU使用等。

 

Procs

  • r:運行的和等待(CPU時間片)運行的進程數,這個值也可以判斷是否需要增加CPU(長期大于1)
  • b:處于不可中斷狀態的進程數,常見的情況是由IO引起的

Memory 類似free命令

Swap

  • si: 交換內存使用,由磁盤調入內存
  • so: 交換內存使用,由內存調入磁盤

內存夠用的時候,這2個值都是0,如果這2個值長期大于0時,系統性能會受到影響。磁盤IO和CPU資源都會被消耗。

IO

  • bi: 從塊設備讀入的數據總量(讀磁盤) (KB/s),
  • bo: 寫入到塊設備的數據總理(寫磁盤) (KB/s)
  • 隨機磁盤讀寫的時候,這2個 值越大,能看到CPU在IO等待的值也會越大

System

  • in: 每秒產生的中斷次數
  • cs: 每秒產生的上下文切換次數
  • 上面這2個值越大,會看到由內核消耗的CPU時間會越多

CPU

  • us: 用戶進程消耗的CPU時間百分比
  • us 的值比較高時,說明用戶進程消耗的CPU時間多
  • sy: 內核進程消耗的CPU時間百分比
  • sy 的值高時,說明系統內核消耗的CPU資源多,這并不是良性的表現,我們應該檢查原因。
  • wa: IO等待消耗的CPU時間百分比
  • wa 的值高時,說明IO等待比較嚴重,這可能是由于磁盤大量作隨機訪問造成,也有可能是磁盤的帶寬出現瓶頸(塊操作)。
  • id: CPU處在空閑狀態時間百分比

3.4 Strace(CPU)

可以用來查看一個進程在執行過程中的系統調用和所接收的信號。

 

3.5 tcpdump(網絡)

linux下的抓包工具。可以把抓下來的信息重定向到文件里。然后在windows下用ethereal來分析。很強大

3.6 gprof(CPU)

  • 程序中每個函數的CPU使用時間。
  • 每個函數的調用次數。并提供簡單調用關系圖。

 

使用步驟:

  • 用gcc或g++編譯程序時,使用-pg參數
  • 執行編譯得到的運行程序,會產生一個gmon.out文件
  • 使用gprof命令。查看結果信息。(gprof -b proc_name gmon.out | less)

3.7 dstat (綜合)

dstat 是一個可以取代vmstat,IOStat?.NETstat和ifstat這些命令的多功能產品。dstat克服了這些命令的局限并增加了一些另外的功能,增加了監控項,也變得更靈活了。dstat可以很方便監控系統運行狀況并用于基準測試和排除故障。

 

3.8 mpstat (CPU)

它能實時監測多處理器上每個CPU的使用情況。

3.9 perf (CPU)

perf top命令可以查看哪些內核調用或用戶調用的性能。另外perf stat通過概括精簡的方式提供被調試程序運行的整體情況和匯總數據。

 

3.10 lsof (文件)

它能列出當前系統打開的文件描述符,可以看到哪些進程打開了哪些文件。文件描述符有兩個層次的概念:用戶級限制和系統限制,用戶級限制可以通過ulimit

-n查看,系統級限制可以通過sysctl

-a命令查看,其中fs.file-max是整個系統共能打開的文件描述符,epoll.max_user_watches是一個用戶能往epoll內核事件表中注冊的事件總量,往epoll內核事件表中注冊一個事件,在32位系統上大概消耗90字節的內核空間,在64位系統上則消耗160字節的內核空間。

3.11 netstat (網絡)

可以打印本地網卡接口上的全部連接,路由表信息,網卡接口信息等,一般用netstat -apn

3.12 ifstat (網絡)

它是一個網絡流量監測工具,可以輸出各個網卡的in/out流量信息。

3.13 iostat (磁盤)

它主要用于監控系統設備的IO負載情況。

3.14 nc (調試工具)

主要用來快速構建網絡連接??梢宰屗苑掌鞣绞竭\行,監聽某個端口并接收客戶連接,可以用于調測客戶端程序。也可以使之以客戶端方式運行,向服務器發起連接并收發數據,可以用于調試服務器程序。

文章來源:
https://www.jianshu.com/p/316b17acde6a

分享到:
標簽:服務器
用戶無頭像

網友整理

注冊時間:

網站:5 個   小程序:0 個  文章:12 篇

  • 51998

    網站

  • 12

    小程序

  • 1030137

    文章

  • 747

    會員

趕快注冊賬號,推廣您的網站吧!
最新入駐小程序

數獨大挑戰2018-06-03

數獨一種數學游戲,玩家需要根據9

答題星2018-06-03

您可以通過答題星輕松地創建試卷

全階人生考試2018-06-03

各種考試題,題庫,初中,高中,大學四六

運動步數有氧達人2018-06-03

記錄運動步數,積累氧氣值。還可偷

每日養生app2018-06-03

每日養生,天天健康

體育訓練成績評定2018-06-03

通用課目體育訓練成績評定