中文字幕日韩精品一区二区免费_精品一区二区三区国产精品无卡在_国精品无码专区一区二区三区_国产αv三级中文在线

采用分段排查法診斷服務(wù)器性能

2021-02-23    分類: 網(wǎng)站建設(shè)

在日常性能測試中,我們需要掌握一些常用的策略以及有必要了解和掌握查看服務(wù)器性能的命令,來排查診斷服務(wù)器性能。

今天,就和大家分享一下在壓測過程中,采用分段排查法快速利用命令去診斷服務(wù)器的性能。

Linux服務(wù)器分段排查的方法,按照CPU、內(nèi)存、磁盤IO、網(wǎng)絡(luò)的先后順序依次排除。參考流程圖如下:

  • 關(guān)注cpu(sys+us)使用率,若此值持續(xù)大于80%,可以觀察進(jìn)程視圖,是否是非核心應(yīng)用進(jìn)程占用大量CPU資源,若能排除非核心應(yīng)用進(jìn)程的影響,則基本能確定該系統(tǒng)cpu資源面臨短缺,此時結(jié)合vmstat監(jiān)控觀察到proc列r值應(yīng)該較大;同理,當(dāng)cpu利用率很低,但運(yùn)行進(jìn)程隊列(r值)卻很大時,表面cpu存在阻塞
  • 關(guān)注%idle(cpu 空閑時間的百分比),若此值較高但系統(tǒng)響應(yīng)卻很慢時,有可能是CPU在等待分配內(nèi)存,此時應(yīng)關(guān)注內(nèi)存使用情況(見step3);如果空閑時間%idle持續(xù)為0并且系統(tǒng)時間(cpu sy)是用戶時間(cpu us)的兩倍 ,系統(tǒng)則面臨著CPU資源的短缺.
  • 關(guān)注%wait(cpu等待 IO 的時間的百分比),在cpu資源尚未耗盡情況下,若此值持續(xù)很高表示系統(tǒng)存儲IO可能存在瓶頸;問題原因可能是:(1)系統(tǒng)存在一個應(yīng)用程序問題(應(yīng)用本身有許多IO請求);(2)物理內(nèi)存不足; (3)低效的 I/O 子系統(tǒng)配置; 此時應(yīng)先排查是否是應(yīng)用程序問題,然后檢查系統(tǒng)內(nèi)存使用情況,若是交換分頁多,則確定是由物理內(nèi)存不足引發(fā)的磁盤IO問題(見step3);若不是,則檢查系統(tǒng)磁盤,結(jié)合iostat來驗證此現(xiàn)象是由應(yīng)用IO過多造成(見step4).

Step2 結(jié)合vmstat、sar監(jiān)控cpu:

主要關(guān)注報告中的4個cpu列和2個procs(內(nèi)核線程)列

  • r:等待在CPU資源的進(jìn)程數(shù)。這個數(shù)據(jù)比平均負(fù)載更加能夠體現(xiàn)CPU負(fù)載情況,數(shù)據(jù)中不包含等待IO的進(jìn)程。如果這個數(shù)值大于系統(tǒng)中的邏輯CPU核數(shù),表示系統(tǒng)現(xiàn)在運(yùn)行比較慢,有多數(shù)的進(jìn)程等待CPU,那么系統(tǒng)的CPU資源已經(jīng)飽和。
  • us, sy, id, wa, st:這些都代表了CPU時間的消耗,它們分別表示用戶時間(user)、系統(tǒng)(內(nèi)核)時間(sys)、空閑時間(idle)、IO等待時間(wait)和被偷走的時間(stolen,一般被其他虛擬機(jī)消耗)。上述這些CPU時間,可以讓我們很快了解CPU是否出于繁忙狀態(tài)。一般情況下,如果用戶時間和系統(tǒng)時間相加非常大,CPU出于忙于執(zhí)行指令。如果IO等待時間很長,那么系統(tǒng)的瓶頸可能在磁盤IO。

sar –P ALL : 對cpu分開查詢,統(tǒng)計每個cpu的使用情況,檢查多個cpu的負(fù)載是否平衡

通過前兩步,已能基本確定cpu是否存在瓶頸:

  • 若cpu資源不足,可以調(diào)整應(yīng)用程序?qū)PU的占用情況,使得應(yīng)用程序能夠更有效的使用CPU,同時可以考慮增加更多的CPU;
  • 若cpu不是瓶頸,則著重查看系統(tǒng)內(nèi)存。

Step3 用vmstat查看內(nèi)存使用情況:

每行會輸出一些系統(tǒng)核心指標(biāo),這些指標(biāo)可以讓我們更詳細(xì)的了解系統(tǒng)狀態(tài)。后面跟的參數(shù)1,表示每秒輸出一次統(tǒng)計信息,參數(shù)2,表示一共輸出2次統(tǒng)計信息。表頭提示了每一列的含義,這只介紹一些和內(nèi)存性能調(diào)優(yōu)相關(guān)的列:

Memory區(qū)域

  • swpd:表示切換到內(nèi)存交換區(qū)的內(nèi)存大小,即虛擬內(nèi)存已使用的大小(單位KB),如果大于0,表示你的機(jī)器物理內(nèi)存不足了,如果不是程序內(nèi)存泄露的原因,那么你該升級內(nèi)存了或者把耗內(nèi)存的任務(wù)遷移到其他機(jī)器。
  • free:表示當(dāng)前空閑的物理內(nèi)存(以千字節(jié)為單位), 如果剩余內(nèi)存不足,也會導(dǎo)致系統(tǒng)性能問題。
  • buff:表示baffers cached內(nèi)存大小,也就是緩沖大小,一般對塊設(shè)備的讀寫才需要緩沖。
  • Cache:表示page cached的內(nèi)存大小,也就是緩存大小,一般作為文件系統(tǒng)進(jìn)行緩沖,頻繁訪問的文件都會被緩存,如果cache值非常大說明緩存文件比較多,如果此時io中的bi比較小,說明文件系統(tǒng)效率比較好。

Swap區(qū)域

  • si:表示有磁盤調(diào)入內(nèi)存,也就是內(nèi)存進(jìn)入內(nèi)存交換區(qū)的內(nèi)存大小;通俗的講就是 每秒從磁盤讀入虛擬內(nèi)存的大小,如果這個值大于0,表示物理內(nèi)存不夠用或者內(nèi)存泄露了,要查找耗內(nèi)存進(jìn)程解決掉。
  • so:表示由內(nèi)存進(jìn)入磁盤,也就是由內(nèi)存交換區(qū)進(jìn)入內(nèi)存的內(nèi)存大小。

注意:一般情況下si、so的值都為0,如果si、so的值長期不為0,則說明系統(tǒng)內(nèi)存不足,需要增加系統(tǒng)內(nèi)存。

Step4 用iostat查看磁盤IO

  • tps:該設(shè)備每秒的傳輸次數(shù)(Indicate the number of transfers persecond that were issued to the device.)。"一次傳輸"意思是"一次I/O請求"。多個邏輯請求可能會被合并為"一次I/O請求"。"一次傳輸"請求的大小是未知的。
  • kB_read/s:每秒從設(shè)備(drive expressed)讀取的數(shù)據(jù)量;
  • kB_wrtn/s:每秒向設(shè)備(drive expressed)寫入的數(shù)據(jù)量;
  • kB_read:讀取的總數(shù)據(jù)量;
  • kB_wrtn:寫入的總數(shù)量數(shù)據(jù)量;這些單位都為Kilobytes
  • 關(guān)注%iowait,如果 CPU 和內(nèi)存受限的情況不存在,并且%iowait 長時間大于25%,則認(rèn)為IO存在瓶頸。
  • 收集磁盤IO數(shù)據(jù)吞吐量(iostat –d -k),大致估計系統(tǒng)數(shù)據(jù)吞吐量與應(yīng)用負(fù)載是否相匹配,排查是否有與業(yè)務(wù)無關(guān)的大量IO操作。

Step5 使用sar –d 查看磁盤讀寫:

其中:

  • tps:每秒從物理磁盤I/O的次數(shù).多個邏輯請求會被合并為一個I/O磁盤請求,一次傳輸?shù)拇笮∈遣淮_定的。
  • rd_sec/s:每秒讀扇區(qū)的次數(shù)。
  • wr_sec/s:每秒寫扇區(qū)的次數(shù)。
  • avgrq-sz:平均每次設(shè)備I/O操作的數(shù)據(jù)大小(扇區(qū))。
  • avgqu-sz:磁盤請求隊列的平均長度。
  • await:從請求磁盤操作到系統(tǒng)完成處理,每次請求的平均消耗時間,包括請求隊列等待時間,單位是毫秒(1秒=1000毫秒)。
  • svctm:系統(tǒng)處理每次請求的平均時間,不包括在請求隊列中消耗的時間。
  • %util:I/O請求占CPU的百分比,比率越大,說明越飽和。

正常情況下avserv應(yīng)該是小于avwait值的, 如果avserv的值與avwait很接近,表示幾乎沒有I/O等待,磁盤性能很好;如果avwait的值遠(yuǎn)高于avserv的值,則表示I/O隊列等待太長,系統(tǒng)上運(yùn)行的應(yīng)用程序?qū)⒆兟疟PIO為系統(tǒng)瓶頸。

Step6 使用netstat查看網(wǎng)絡(luò):

1、通過ping命令檢測網(wǎng)絡(luò)的連通性

2、通過netstat –nltp組合檢測網(wǎng)絡(luò)接口狀況

-u (udp)僅顯示udp相關(guān)選項

-l 僅列出有在 Listen (監(jiān)聽) 的服務(wù)狀態(tài)

-n 拒絕顯示別名,能顯示數(shù)字的全部轉(zhuǎn)化成數(shù)字。

-t (tcp)僅顯示tcp相關(guān)選項

-p 顯示建立相關(guān)鏈接的程序名,

3、通過netstat –r組合檢測系統(tǒng)的路由表信息

總結(jié):

cpu瓶頸常見征兆:

  • 很慢的響應(yīng)時間
  • cpu空閑時間為零
  • 過高的用戶占用cpu時間
  • 過高的系統(tǒng)占用cpu時間
  • 長時間的有很長的運(yùn)行進(jìn)程隊列

cpu調(diào)優(yōu)方法:

  • 平衡系統(tǒng)負(fù)載——在不同的期間運(yùn)行進(jìn)程,從而更有效地利用每天的24小時。
  • 使用 nice 或 renice 優(yōu)化調(diào)度程序——可為運(yùn)行進(jìn)程分配不同的優(yōu)先級,以避免占用大量cpu資源。
  • 增加資源——添加更多的cpu

內(nèi)存瓶頸常見征兆:

  • 很高的換頁率
  • 交換空間使用率很高
  • 進(jìn)程進(jìn)入不活動狀態(tài);
  • 交換區(qū)所有磁盤的活動次數(shù)很高;
  • 很高的全局系統(tǒng)CPU利用率;
  • 內(nèi)存不夠出錯

內(nèi)存調(diào)優(yōu)方法:

  • 保證交換空間分配合理(分配足夠多的交換空間、每個交換空間大小相同、每個交換空間分配在不同的硬盤上)
  • 參數(shù)調(diào)整,調(diào)整內(nèi)存參數(shù)閥值
  • 增加內(nèi)存資源

IO瓶頸常見征兆:

  • 過高的磁盤利用率
  • 太長的磁盤等待隊列
  • 等待磁盤I/O的時間所占的百分率太高
  • 太高的物理I/O速率
  • 過低的緩存命中率
  • 太長的運(yùn)行進(jìn)程隊列,但CPU卻空閑

IO調(diào)優(yōu)方法:

  • 一般來說,高的%iowait 表明系統(tǒng)至少存在一個應(yīng)用程序問題、缺少內(nèi)存問題或低效的 I/O 子系統(tǒng)配置;
  • 應(yīng)檢查應(yīng)用程序產(chǎn)生大量IO請求是否正常;
  • 檢查是否是由于內(nèi)存交換空間頻繁換頁引起的IO問題;
  • 檢查磁盤配置情況是否合理

針對磁盤IO本身的優(yōu)化來說,盡管存在一些 I/O 優(yōu)化參數(shù)的虛擬內(nèi)存等價項,但是提高磁盤 I/O 性能的好方法仍然是正確地配置Linux系統(tǒng),而不僅僅是優(yōu)化相關(guān)的參數(shù)。

最后

排查Linux服務(wù)器性能問題還有很多工具,上面介紹的一些命令,可以幫助我們快速的定位問題。在以后,實(shí)踐工作中,如果你掌握的shell命令多了之后,你就可以根據(jù)自己的工作需要,寫一些腳本,去輔助自己的測試工作,例如數(shù)據(jù)監(jiān)控、數(shù)據(jù)收集、數(shù)據(jù)處理等等,然后和其他工具結(jié)合,就可以形成一套解決方案了。

注意:本文旨在學(xué)習(xí)交流,涉及到部分參數(shù)指標(biāo)可能與實(shí)際項目有出入,僅為以后的Linux服務(wù)器系統(tǒng)性能分析工作提供參考。

分享題目:采用分段排查法診斷服務(wù)器性能
文章位置:http://www.rwnh.cn/news27/102577.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站營銷軟件開發(fā)、品牌網(wǎng)站建設(shè)、網(wǎng)站內(nèi)鏈、定制開發(fā)網(wǎng)站維護(hù)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

成都定制網(wǎng)站網(wǎng)頁設(shè)計
贺州市| 长治县| 沂南县| 祁连县| 盐津县| 廊坊市| 汉川市| 册亨县| 德庆县| 柳河县| 丽水市| 静宁县| 东宁县| 额敏县| 潜山县| 曲阳县| 彰化市| 莱西市| 葵青区| 西林县| 临泉县| 高邑县| 多伦县| 庐江县| 博白县| 正阳县| 崇文区| 岳普湖县| 麦盖提县| 花莲市| 九台市| 石楼县| 二连浩特市| 右玉县| 石狮市| 柳江县| 灵宝市| 广饶县| 桓台县| 五原县| 泰安市|