成人午夜视频全免费观看高清-秋霞福利视频一区二区三区-国产精品久久久久电影小说-亚洲不卡区三一区三区一区

磁盤IO和網(wǎng)絡(luò)IO該如何評估、監(jiān)控、性能定位和優(yōu)

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

生產(chǎn)中經(jīng)常遇到一些IO延時長導致的系統(tǒng)吞吐量下降、響應(yīng)時間慢等問題,例如交換機故障、網(wǎng)線老化導致的丟包重傳;存儲陣列條帶寬度不足、緩存不足、QoS限制、RAID級別設(shè)置不當?shù)纫鸬腎O延時。

一、評估 IO 能力的前提

評估一個系統(tǒng)IO能力的前提是需要搞清楚這個系統(tǒng)的IO模型是怎么樣的。那么IO模型是什么,為什么要提煉IO模型呢?

(一) IO模型

在實際的業(yè)務(wù)處理過程中,一般來說IO比較混雜,比如說讀寫比例、IO尺寸等等,都是有波動的。所以我們提煉IO模型的時候,一般是針對某一個特定的場景來建立模型,用于IO容量規(guī)劃以及問題分析。

最基本的模型包括:

  • IOPS
  • 帶寬
  • IO的尺寸(大?。?/li>

如果是磁盤IO,那么還需要關(guān)注:

  • 磁盤IO分別在哪些盤
  • 讀IO和寫IO的比例
  • 讀IO是順序的還是隨機的
  • 寫IO是順序的還是隨機的

(二)為什么要提煉IO模型

不同模型下,同一臺存儲,或者說同一個LUN,能夠提供的IOPS、帶寬(MBPS)、響應(yīng)時間3大指標的大值是不一樣的。

當存儲中提到IOPS大能力的時候,一般采用隨機小IO進行測試,此時占用的帶寬是非常低的,響應(yīng)時間也會比順序的IO要長很多。如果將隨機小IO改為順序小IO,那么IOPS還會更大。當測試順序大IO時,此時帶寬占用非常高,但IOPS卻很低。

因此,做IO的容量規(guī)劃、性能調(diào)優(yōu)需要分析業(yè)務(wù)的IO模型是什么。

二、評估工具

(一)磁盤IO評估工具

磁盤IO能力的評估工具有很多,例如orion、iometer,dd、xdd、iorate,iozone,postmark,不同的工具支持的操作系統(tǒng)平臺有所差異,應(yīng)用場景上也各具特色。

有的工具可以模擬應(yīng)用場景,比如orion是oracle出品,模擬Oracle數(shù)據(jù)庫IO負載(采用與Oracle相同的IO軟件棧)。

即模擬oracle應(yīng)用對文件或磁盤分區(qū)進行讀寫(可指定讀寫比例、io size,順序or隨機)這里就需要提前知道自己的IO模型。如果不知道,可以采用自動模式,讓orion自動的跑一遍,可以得出不同進程的并發(fā)讀寫下,高的IOPS、MBPS,以及對應(yīng)的響應(yīng)時間。

比對dd,僅僅是對文件進行讀寫,沒有模擬應(yīng)用、業(yè)務(wù)、場景的效果。

postmark可以實現(xiàn)文件讀寫、創(chuàng)建、刪除這樣的操作。適合小文件應(yīng)用場景的測試。

(二)網(wǎng)絡(luò)IO評估工具

ping:最基本的,可以指定包的大小。

iperf、ttcp:測試tcp、udp協(xié)議大的帶寬、延時、丟包。

衡量windows平臺下的帶寬能力,工具比較多:NTttcp、LANBench、pcattcp、LAN Speed Test (Lite)、NETIO、NetStress。

三、主要監(jiān)控指標和常用監(jiān)控工具

(一)磁盤IO

對于存儲IO:unix、linux平臺,Nmon、iostat是比較好的工具。

nmon用于事后分析,iostat可用于實時查看,也可以采用腳本記錄下來事后分析。

1.IOPS

總IOPS:Nmon DISK_SUMM Sheet:IO/Sec

每個盤對應(yīng)的讀IOPS :Nmon DISKRIO Sheet

每個盤對應(yīng)的寫IOPS :Nmon DISKWIO Sheet

總IOPS:命令行iostat -Dl:tps

每個盤對應(yīng)的讀IOPS :命令行iostat -Dl:rps

每個盤對應(yīng)的寫IOPS :命令行iostat -Dl:wps

2.帶寬

總帶寬:Nmon DISK_SUMM Sheet:Disk Read KB/s,Disk Write KB/s

每個盤對應(yīng)的讀帶寬:Nmon DISKREAD Sheet

每個盤對應(yīng)的寫帶寬:Nmon DISKWRITE Sheet

總帶寬:命令行iostat -Dl:bps

每個盤對應(yīng)的讀帶寬:命令行iostat -Dl:bread

每個盤對應(yīng)的寫帶寬:命令行iostat -Dl:bwrtn

3.響應(yīng)時間

每個盤對應(yīng)的讀響應(yīng)時間:命令行iostat -Dl:read - avg serv,max serv

每個盤對應(yīng)的寫響應(yīng)時間:命令行iostat -Dl:write - avg serv,max serv

4.其他

磁盤繁忙程度、隊列深度、每秒隊列滿的次數(shù)等等。

(二)網(wǎng)絡(luò)IO

1.帶寬

最好在網(wǎng)絡(luò)設(shè)備處直接查看流量(比較準),如果在業(yè)務(wù)的服務(wù)器也可以查看

Nmon:NET Sheet

命令行topas:Network:BPS、B-In、B-Out

2.響應(yīng)時間

簡單的方法,可采用ping命令查看ping的延時是否在合理范圍,是否有丟包現(xiàn)象。

有些交換機對ping命令設(shè)置了較低的優(yōu)先級,可能在回復、轉(zhuǎn)發(fā)ping包的時候有延遲,因此ping的結(jié)果不一定能反映真實情況。如果需要更為精確的測量可以探針捕獲從某服務(wù)器建立TCP連接時發(fā)送的SYN包后開始計時起,到其收到對端發(fā)回的TCP SYNACK后的時間差。

更為準確、利于后期分析的方法是采用專業(yè)的網(wǎng)絡(luò)設(shè)備在網(wǎng)絡(luò)設(shè)備的端口處進行報文捕獲和計算分析。

四、性能定位與優(yōu)化

(一)對磁盤IO爭用的調(diào)優(yōu)思路有哪些?

典型問題:針對主要爭用是IO相關(guān)的場景下,調(diào)優(yōu)的思路有哪些?主要的技術(shù)或者方法是什么?

一、首先要搞清楚IO爭用是因為應(yīng)用等層面的IO量過大導致,還是系統(tǒng)層面不能承載這些IO量。

如果應(yīng)用層面有過多不必要的讀寫,首先解決應(yīng)用問題。

舉例1:數(shù)據(jù)庫里面用于sort的buffer過小,當做sort的時候,有大量的內(nèi)存與磁盤之間的數(shù)據(jù)交換,那么這類IO可以通過擴大sort buffer的內(nèi)存來減少或避免。

舉例2:從應(yīng)用的角度,一些日志根本不重要,不需要寫,那么可以把日志級別調(diào)低、甚至不記錄日志,數(shù)據(jù)庫層面可以加hint “no logging”。

二、存儲問題的分析思路

存儲IO問題可能出現(xiàn)在IO鏈路的各個環(huán)節(jié),分析IO瓶頸是主機/網(wǎng)絡(luò)/存儲中的哪個環(huán)節(jié)導致的。

IO從應(yīng)用->內(nèi)存緩存->塊設(shè)備層->HBA卡->驅(qū)動->交換網(wǎng)絡(luò)->存儲前端->存儲cache->RAID組->磁盤,經(jīng)過了一個很長的鏈條。

需要逐段分析:

1、主機側(cè):應(yīng)用->內(nèi)存緩存->塊設(shè)備層→HBA卡->驅(qū)動

2、網(wǎng)絡(luò)側(cè):交換網(wǎng)絡(luò)

3、存儲側(cè):存儲前端-》存儲cache-》RAID組-》磁盤

分析思路:

1、主機側(cè)

當主機側(cè)觀察到的時延很大,存儲側(cè)的時延較小,則可能是主機側(cè)或網(wǎng)絡(luò)存在問題。

主機是I/O的發(fā)起端,I/O特性首先由主機的業(yè)務(wù)軟件和操作系統(tǒng)軟件和硬件配置等決定。例如,在“服務(wù)隊列滿”這一章節(jié)介紹的I/O 隊列長度參數(shù)(queue_depth),當然,還有許多其他的參數(shù)(如: driver 可以向存儲發(fā)的大的 I/O、光纖卡DMA memor區(qū)域大小、塊設(shè)備并發(fā)數(shù)、HBA卡并發(fā)數(shù))。

若排查完成,性能問題還是存在,則需要對組網(wǎng)及鏈路、存儲側(cè)進行性能問題排查。

2、網(wǎng)絡(luò)側(cè)

當主機側(cè)觀察到的時延很大,存儲側(cè)的時延較小,且排查主機側(cè)無問題時,則性能問題可能出現(xiàn)在鏈路上。

可能的問題有:帶寬達到瓶頸、交換機配置不當、交換機故障、多路徑選路錯誤、線路的電磁干擾、光纖線有損、接口松動等。帶寬達到瓶頸、交換機配置不當、多路徑選路錯誤、線路的電磁干擾等。

3、存儲側(cè)

如果主機側(cè)時延與存儲側(cè)時延都很大且相差較小,說明問題可能出現(xiàn)在存儲上。首先需要了解當前存儲側(cè)所承載的IO模型、存儲資源配置,并從存儲側(cè)收集性能數(shù)據(jù),按照I/O路徑進行性能問題的定位。

常見原因如硬盤性能達到上限、鏡像帶寬達到上限、存儲規(guī)劃(如條帶過?。?、硬盤域和存儲池劃分(例如劃分了低速的磁盤)、thin LUN還是thick LUN、LUN對應(yīng)的存儲的緩存設(shè)置(緩存大小、緩存類型,內(nèi)存還是SSD);

IO的Qos限制的磁盤IO的帶寬、LUN優(yōu)先級設(shè)置、存儲接口模塊數(shù)量過小、RAID劃分(比如RAID10>RAID5>RAID6)、條帶寬度、條帶深度、配置快照、克隆、遠程復制等增值功能拖慢了性能、是否有重構(gòu)、balancing等操作正在進行、存儲控制器的CPU利用率過高、LUN未格式化完成引起短時的性能問題、cache刷入磁盤的參數(shù)(高低水位設(shè)置),甚至數(shù)據(jù)在盤片的中心還是邊緣等等。

具體每個環(huán)節(jié) 都有一些具體的方法、命令、工具來查看性能表現(xiàn),這里不再贅述。

(二)關(guān)于低延遲事務(wù)、高速交易的應(yīng)用在IO方面可以有哪些調(diào)優(yōu)思路和建議?

典型問題:關(guān)于近期在一些證券行業(yè)碰到的低延遲事務(wù)、高速交易的應(yīng)用需求,在IO模型路徑方面可以有哪些可以調(diào)優(yōu)的思路和建議?

對于低延遲事務(wù),可以分析一下業(yè)務(wù)是否有持久化保存日志的需要,或者說保存的安全程度有多高,以此來決定采用什么樣的IO。

1.從業(yè)務(wù)角度

比如說業(yè)務(wù)上不需要保存日志,那就不用寫IO。

或者保存級別不高,那就可以只寫一份數(shù)據(jù),對于保存級別較高的日志,一般要雙寫、或多寫。

2.從存儲介質(zhì)角度

1)可以全部采用SSD

2)或者采用SSD作為存儲的二級緩存(一級緩存是內(nèi)存)

3)或者存儲服務(wù)器里面采用存儲分級(將熱點數(shù)據(jù)遷移到SSD、SAS等性能較好的硬盤上)

4)可以采用RAMDISK(內(nèi)存作為磁盤用)

5)增加LUN所對應(yīng)的存儲服務(wù)器的緩存

3.從配置的角度

普通磁盤存儲的LUN,可以設(shè)置合理的RAID模式(比如RAID10)去適應(yīng)你的業(yè)務(wù)場景。

分條的深度大于等于一個IO的大小、有足夠的寬度支持并發(fā)寫。

4.IO路徑的角度

采用高速的組網(wǎng)技術(shù),而不用iSCSI之類的低速方式。

(三) 網(wǎng)絡(luò)IO問題定位思路和方法

與磁盤IO類似,網(wǎng)絡(luò)IO同樣需要分段查找和分析。通過網(wǎng)絡(luò)抓包和分析的工具,診斷網(wǎng)絡(luò)的延時、丟包等異常情況出現(xiàn)在哪一段,然后具體分析。

同時,抓主機端的IPtrace可以幫助診斷不少的網(wǎng)絡(luò)問題,有興趣可以看這篇文章。http://www.aixchina.net/Article/177921

(四)誤判為IO問題的案例

很多時候,應(yīng)用響應(yīng)時間很慢,看似是IO問題,實則不然,這里舉兩個例子

1.【案例分享】:Oracle buffer等待占總時間的大頭

在一個場景中,oracle的awr報告top10事件的第一名是:buffer busy waits

buffer busy waits是個比較general的等待,是session等待某個buffer引起的,但具體是什么buffer并不清楚,比如log sync等待也會引起buffer busy wait。

這是個連帶指標,分析是暫且不管,需要看看他臨近的問題事件是什么。

awr報告top10事件的第二名是enq:TX - index contention

這里的臨近事件就是enq:TX - index contention, index contention常由大量并發(fā)INSERT 造成的 index split 引起,也就是說不斷更新索引的過程中,二叉樹不斷長大。需要分裂,分裂的時候,其他session就需要等著。(這里的分析需要些數(shù)據(jù)庫知識)

之后的調(diào)優(yōu)過程中,將索引分區(qū),避免競爭。調(diào)整后重新測試,Index contention、Bufferbusy wait雙雙從top10事件中消失了

這類數(shù)據(jù)庫相關(guān)的等待事件非常常見,看似是等待IO,實際上是數(shù)據(jù)庫的規(guī)劃設(shè)計有問題。

2.【案例分享】:ping延時間歇性暴增

某業(yè)務(wù)系統(tǒng)的響應(yīng)時間很不穩(wěn)定,該系統(tǒng)有兩類服務(wù)器構(gòu)成,可以簡單理解為A和B,A為客戶端,B為服務(wù)端,A處業(yè)務(wù)的響應(yīng)時間非常不穩(wěn)定。

第一步:

從各類資源(CPU、內(nèi)存、網(wǎng)絡(luò)IO、磁盤IO)中追查原因。最終發(fā)現(xiàn)A與B直接的網(wǎng)絡(luò)延時非常不穩(wěn)定。A ping B,在局域網(wǎng)環(huán)境,按理說延時應(yīng)該是0ms-1ms之間,而我們在業(yè)務(wù)高峰時發(fā)現(xiàn),隔一小段時間就有100-200ms的延時出現(xiàn)。即使在沒有業(yè)務(wù)的情況下,ping也30-40ms的延時。

第二步:

那么好,著手定位網(wǎng)絡(luò)問題吧。

開始排查網(wǎng)路。換A的物理端口、換交換機、換網(wǎng)線、換對端的物理端口等等一系列措施之后,發(fā)現(xiàn)問題依然存在。

第三步:

采用網(wǎng)絡(luò)探測設(shè)備,從交換機兩側(cè)端口抓包,分析一個tcp連接的建立過程時間消耗在哪里。分析后發(fā)現(xiàn),200ms的延時,都是在B測。即一個tcp連接建立過程在A側(cè)和交換機側(cè)幾乎沒有什么時間消耗。

第四步:

B側(cè)多臺分區(qū)共用一個物理機。猜測是否是分區(qū)過多導致。當只有一個LPAR啟動的時候,沒有ping的延時,當啟動一部分LPAR時候,延時較小,當所有LPAR均啟動,ping 延時較大。

問題根本原因:

此時,問題水落石出,原來是由于分區(qū)過多導致了B回復A的ping有了延時。那么為什么會出現(xiàn)這種情況呢?一個物理機上CPU資源是有限的(本環(huán)境中是3顆),即使只有一個LPAR,其上面的N個進程也會去輪流使用CPU,何況此時是M臺LPAR,MN個進程去輪流使用這三個CPU,當然調(diào)度算法并不是這么簡單,這里僅僅是從理論上做個說明。

假設(shè)每個CPU時間片是10ms,那么極端情況下,一個進程要等到CPU需要等待(MN-1)*10(ms)/3。

況且,這么多LPAR的進程輪詢一遍CPU,CPU里面的cache 數(shù)據(jù)估計早就被擠走了,重新加載是比較耗時的。

應(yīng)對方法:

之前LPAR也設(shè)置了保障的CPU(MIPS數(shù)量的保障),但只有數(shù)量沒有質(zhì)量(上述提到的CPU cache問題,即親和性問題)

應(yīng)對方法是:將重要的LPAR分配dedicated CPU,保證CPU資源的質(zhì)量,保證輪詢CPU的客戶盡量少,這樣CPU cache中的數(shù)據(jù)盡量不被清走。經(jīng)驗證,ping延時基本消失,方法有效。

本案例是一起看似是網(wǎng)絡(luò)問題,但實際是資源調(diào)度方式的問題。

順便提一句,很多情況下,客戶端的響應(yīng)時間不穩(wěn)定都是由服務(wù)器端的服務(wù)能力不穩(wěn)定造成的。一般情況下都是應(yīng)用、數(shù)據(jù)庫的問題造成。而本案例是操作系統(tǒng)層面答復ping出現(xiàn)間歇性延時,很容易誤導我們的分析判斷。

網(wǎng)站標題:磁盤IO和網(wǎng)絡(luò)IO該如何評估、監(jiān)控、性能定位和優(yōu)
網(wǎng)頁鏈接:http://jinyejixie.com/news/105485.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站收錄、企業(yè)建站、關(guān)鍵詞優(yōu)化、動態(tài)網(wǎng)站、定制網(wǎng)站、網(wǎng)站排名

廣告

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

成都做網(wǎng)站
上饶县| 志丹县| 武邑县| 正定县| 临澧县| 司法| 长泰县| 杭锦旗| 渭源县| 郯城县| 汝城县| 深圳市| 景洪市| 衡阳市| 九寨沟县| 珲春市| 黄冈市| 岳西县| 盐城市| 扎鲁特旗| 南和县| 长春市| 礼泉县| 霍邱县| 元朗区| 陆河县| 普洱| 苍溪县| 牙克石市| 甘肃省| 罗源县| 乐东| 东港市| 民勤县| 平湖市| 罗城| 温州市| 泌阳县| 香格里拉县| 桓台县| 温宿县|