自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

容器 I/O 性能診斷:到底哪個應(yīng)用是帶寬殺手?

存儲 存儲架構(gòu)
在企業(yè)生產(chǎn)環(huán)境下 Pod 數(shù)量多、規(guī)模大,環(huán)境復(fù)雜場景下,通過阿里云容器服務(wù) ACK 的存儲卷的 I/O 可觀測性可以幫助客戶快速、準(zhǔn)確地定位是哪個 Pod、哪個應(yīng)用占用了過多帶寬,元數(shù)據(jù)請求和數(shù)據(jù)請求資源,幫助客戶通過優(yōu)化策略、修改應(yīng)用等方式解決 I/O 性能問題,提升業(yè)務(wù)運行效率。

作者 | 王焦

?容器和 Kubernetes 的發(fā)展成熟為應(yīng)用的云原生化提供最基礎(chǔ)的支撐,從而使企業(yè)最大化利用云上的資源。存儲作為應(yīng)用運行的基石,也在服務(wù)云原生化的過程中不斷演進。

一、容器化應(yīng)用 I/O 性能優(yōu)化挑戰(zhàn)

?目前在云上的容器化應(yīng)用場景選擇存儲方案時,通常會使用塊存儲(EBS),文件存儲(NAS,CPFS,DBFS)和對象存儲(OSS)三種,POSIX 語義的文件系統(tǒng)是面向容器存儲使用場景最直觀和最友好的方式,通常也是容器場景下使用最多的存儲訪問方式。另一方面,為了實現(xiàn)集群級別的存儲編排能力,K8s 在維護容器組(Pod)的生命周期中會將依賴的存儲卷以文件系統(tǒng)的形式掛載到容器內(nèi),從而從應(yīng)用角度可以無差別地讀寫塊存儲、文件存儲和對象存儲的外置存儲。

現(xiàn)在,云原生應(yīng)用的規(guī)模化趨勢日益明顯,在大數(shù)據(jù)分析、AI 等數(shù)據(jù)密集型場景也得到越來越廣泛地應(yīng)用,這些場景對 I/O 性能的要求很高。而現(xiàn)實情況是,云上的文件存儲和對象存儲一般都是以 TCP 和 HTTP(s)協(xié)議提供存儲服務(wù),是典型的客戶端服務(wù)器(CS)模式,傳統(tǒng)的服務(wù)端監(jiān)控是通過發(fā)起者的 IP/連接來區(qū)分不同的應(yīng)用,但在容器形式的部署中一個虛擬機/物理機節(jié)點可以部署數(shù)十個到數(shù)百個容器,一個應(yīng)用可以跨多個主機。因此,傳統(tǒng)的服務(wù)端監(jiān)控在現(xiàn)代的容器化部署中不能提供足夠的觀測粒度和維度來分析不同應(yīng)用的 I/O 特性。

二、基于 ACK CNFS 存儲卷的 I/O 可觀測性框架

?為了幫助企業(yè)快速定位引發(fā)容器化應(yīng)用 I/O 瓶頸的問題,保證業(yè)務(wù)持續(xù)穩(wěn)定運行,阿里云容器文件存儲 ACK CNFS 提供了面向應(yīng)用和集群維度的 I/O 可觀測性框架, 包括 POSIX 細粒度操作可觀測性、容器組粒度的可觀測性、跨機多副本的應(yīng)用級可觀測性,以及集群維度針對文件系統(tǒng)和對象存儲的聚合訪問特性等,幫助用戶構(gòu)建統(tǒng)一的客戶端 I/O 性能問題監(jiān)測和分析能力01

1.什么是 CNFS?

容器文件存儲(CNFS)是對文件存儲和對象存儲的生命周期管理邏輯抽象對象,通過提供 CNFS-OSSFS,CNFS-NAS,CNFS-CPFS,CPFS-DBFS 等存儲類(StorageClass)來實現(xiàn)對云上 OSS Bucket,NAS FileSystem,CPFS,DBFS 的全生命周期管理和動態(tài)卷(PV)的增刪查改(CRUD):

  • CNFS-OSSFS 今天已經(jīng)被廣泛的使用在大數(shù)據(jù),自動駕駛,生物計算領(lǐng)域,作為訪問 OSS 的主要手段。 
  • CNFS-NAS 已經(jīng)與彈性加速客戶端(Elastic Acceleration Client)深度整合,在 NFS 客戶端基礎(chǔ)上優(yōu)化了多連接傳輸、支持了本地緩存/分布式緩存,預(yù)讀預(yù)寫功能加速文件讀寫,目前已經(jīng)在 CICD,機器學(xué)習(xí),生物計算等領(lǐng)域廣泛使用。  
  • CNFS-CPFSv2 作為低延遲,百萬級文件訪問的高性能存儲,也已經(jīng)在高性能計算,自動駕駛,生物計算等領(lǐng)域廣泛使用。 
  • CPFS-DBFS 已經(jīng)作為數(shù)據(jù)庫服務(wù)提供共享數(shù)據(jù)庫文件存儲,有效降低了數(shù)據(jù)庫系統(tǒng)的多副本成本,目前已經(jīng)在云上數(shù)據(jù)庫領(lǐng)域 DBaaS 使用。  

2.容器存儲卷 I/O 問題類型

本文會以對象存儲 OSS 訪問為例,通過 ACK 存儲卷 I/O 可觀測能力對應(yīng)用內(nèi)掛載的 I/O 特性分析、問題診斷和針對熱點應(yīng)用/熱點數(shù)據(jù)分析、掛載失敗分析來解決如下四類問題:

  • 定位容器內(nèi)應(yīng)用哪些 I/O 操作高造成的系統(tǒng)繁忙。 
  • 定位容器內(nèi)應(yīng)用元數(shù)據(jù)操作高造成的后臺系統(tǒng)繁忙。 
  • 定位容器內(nèi)應(yīng)用數(shù)據(jù)操作高的熱點文件系統(tǒng)和熱點文件路徑。 
  • 應(yīng)用數(shù)據(jù)卷文件系統(tǒng)掛載失敗分析。 

3.存儲卷監(jiān)控儀表板大盤

存儲卷的監(jiān)控儀表板包含三個大盤:

  • Container Storage IO Monitoring (Cluster Level):容器存儲 I/O 監(jiān)控(集群維度)的大盤,TOPN Pod 的重要指標(biāo)的統(tǒng)計。 
  • Pod IO Monitoring (Pod Level):容器組 I/O 監(jiān)控(容器組維度)的大盤,以 Pod 為過濾選項,存儲卷重要指標(biāo)的統(tǒng)計。 
  • OSS IO Monitoring (Cluster Level):對象存儲 I/O 監(jiān)控(集群維度)的大盤,以 OSS Bucket 為過濾選項,存儲重要指標(biāo)的統(tǒng)計。 

模擬用戶創(chuàng)建兩類有狀態(tài)服務(wù):oss-fio-read-sts,ReplicaSet:3 個,功能:使用 fio 命令讀取 OSS 存儲卷中預(yù)先寫好的 5G 大小的臨時文件 5G.tmpfile, 模擬頻繁讀操作;oss-fio-list-sts,ReplicaSet:1 個,功能:在 OSS 存儲卷中執(zhí)行文件的 list 遍歷操作, 模擬頻繁請求文件元信息操作;接下來,我們?nèi)绾螐脑飘a(chǎn)品監(jiān)控收到告警,并通過 ACK 的存儲卷定位出哪些是高 I/O 的 pod,哪些請求元數(shù)據(jù)導(dǎo)致后臺系統(tǒng)繁忙,如何找出熱點數(shù)據(jù)。

三、?如何通過 ACK 存儲卷 I/O 可觀測能力定位應(yīng)用維度的 I/O 問題

1.問題一:哪些 I/O 操作頻繁會導(dǎo)致系統(tǒng)繁忙

(1)通過云產(chǎn)品監(jiān)控,創(chuàng)建內(nèi)網(wǎng)流量告警規(guī)則并添加規(guī)則描述:當(dāng) OSS Bucket 的內(nèi)網(wǎng)流出流量大于 10Gbps/s 時,將觸發(fā)告警,告警名稱為“內(nèi)網(wǎng)流出流量大于 10Gbps/s”。

圖片

圖片

(2)當(dāng) OSS Bucket 內(nèi)網(wǎng)出流量大于 10Gbps/s 時,會收到監(jiān)控告警,您可以通過以下操作定位當(dāng)應(yīng)用 Pod 的 PV 讀訪問請求高時,可能觸發(fā)服務(wù)側(cè)限流和不響應(yīng)問題。

圖片

(3)查看 Container Storage IO Monitoring (Cluster Level)監(jiān)控大盤,根據(jù) TopN_Pod_IOPS(IO/s)和 TopN_Pod_Throughput 面板的 read_rate 排序,找到高 I/O 和高吞吐的 Pod。

圖片

圖片

??由示例可看出,名稱為 oss-fio-read-sts-1 的 Pod 產(chǎn)生了最多的讀 I/O 和讀吞吐。4. 查看 Pod IO Monitoring (Pod Level)監(jiān)控大盤,選擇 Pod 為 oss-fio-read-sts-1,然后查看 Throughput 和 POSIX Operation(count/s)面板,找出導(dǎo)致高吞吐的 POSIX Operation,并定位數(shù)據(jù)卷。

圖片

???

圖片

由示例可看出,名稱為 oss-fio-read-sts-1 的 Pod 掛載的 oss-pv 數(shù)據(jù)卷產(chǎn)生了過多的 read 請求。

(5)在集群列表頁面中,單擊目標(biāo)集群名稱,然后在左側(cè)導(dǎo)航欄中,選擇工作負載 > 容器組。

(6)在容器組頁面,名稱列下名為 oss-fio-read-sts-1 的 Pod 進入詳情頁面。在該頁面下獲取應(yīng)用的鏡像信息,根據(jù)以上獲取的高 I/O 和高吞吐信息,根據(jù)該容器的標(biāo)準(zhǔn)輸出日志來定位具體哪些具體業(yè)務(wù)操作導(dǎo)致了過高的 I/O 吞吐,從而決定業(yè)務(wù)側(cè)的邏輯改進優(yōu)化 I/O 的訪問,重新構(gòu)建鏡像替換。對于低優(yōu)先的離線業(yè)務(wù)可以刪除該負載來暫時緩解吞吐壓力。7. 根據(jù)以上示例分析,可以嘗試刪除流量較大的 oss-fio-read-sts 工作負載,來降低 OSS 內(nèi)網(wǎng)出流量,再查看Pod監(jiān)控,流量降低,總體 OSS Bucket 吞吐降低,OSS 帶寬報警解除。

圖片

?2.問題二:哪些元數(shù)據(jù)的操作頻繁會導(dǎo)致后臺系統(tǒng)繁忙

(1)通過云產(chǎn)品監(jiān)控,創(chuàng)建 HeadObject 的告警規(guī)則并添加規(guī)則描述:

當(dāng) OSS Bucket 的 HeadObject 請求達到 10000 次/分鐘時,將觸發(fā)告警,告警名稱為“OSS Head 請求大于 10000 次/min”。

圖片


圖片

(2)當(dāng) HeadObject 請求大于 10000 次/分鐘時,收到監(jiān)控告警,您可以通過以下操作定位當(dāng) Bucket 元數(shù)據(jù)讀訪問請求過高時,可能觸發(fā)服務(wù)側(cè)限流和不響應(yīng)問題。

圖片

(3)查看 OSS IO Monitoring (Cluster Level)監(jiān)控大盤,選擇對應(yīng)的 Bucket,查看 Aggregated Operation of OSS Operation (count/s)面板中的 HeadObject 請求數(shù)。

圖片

??由示例可看出,Bucket 名稱為 oss--2 產(chǎn)生了大量的 HeadObject 請求。

(4)查看 Container Storage IO Monitoring (Cluster Level)監(jiān)控大盤,根據(jù) TopN_Pod_Head_OSS_Operation 面板的 counter 排序,找到 HeadObject 請求數(shù)過多的 Pod,根據(jù) TopN_PV_Head_OSS_Operation 面板,找到 HeadObject 請求最多的存儲卷。

圖片

圖片

???由示例可看出:名稱為 oss-fio-list_sts-0 的 Pod 產(chǎn)生的 HeadObject 請求數(shù)最多而且在 5 分鐘內(nèi) I/O 速率最高;名稱為 oss-pv 的數(shù)據(jù)卷產(chǎn)生的 HeadObject 請求數(shù)最多且 5 分鐘內(nèi) I/O 速率最高。

(5)查看 Pod IO Monitoring (Pod Level)監(jiān)控大盤,選擇 Pod 為 oss-fio-list_sts-0,查看 OSS Object Operation Ration(count/s)面板中 Pod 的 I/O 情況。

(6)在集群列表頁面中,單擊目標(biāo)集群名稱,然后在左側(cè)導(dǎo)航欄中,選擇工作負載 > 容器組。

(7)在容器組頁面,根據(jù)以上示例分析,單擊名稱列下名為 oss-fio-list_sts-0 的 Pod 進入詳情頁面。在該頁面下獲取應(yīng)用的鏡像信息,根據(jù)以上獲取的 HeadObject 請求數(shù)和 I/O 情況,根據(jù)該容器的標(biāo)準(zhǔn)輸出日志來定位具體哪些具體業(yè)務(wù)操作導(dǎo)致了過高的 I/O 吞吐,從而決定業(yè)務(wù)側(cè)的邏輯改進優(yōu)化 I/O 的訪問,重新構(gòu)建鏡像替換。對于低優(yōu)先的離線業(yè)務(wù)可以刪除該負載來暫時緩解吞吐壓力。針對次例子,修改應(yīng)用邏輯避免對根目錄做遞歸的目錄遍歷 e.g. 'ls -hlR';'grep -r',對指定目錄和更準(zhǔn)確目錄執(zhí)行遍歷和搜索操作,來降低對元數(shù)據(jù)的遍歷操作。

(8)根據(jù)以上示例分析,可以嘗試修改成進入到最深的目錄執(zhí)行 ls 操作,再查看 Pod 監(jiān)控,HeadObject 每秒的請求量下降:

圖片

3.問題三:有哪些數(shù)據(jù)操作頻繁的熱點文件系統(tǒng)呵熱點文件路徑?

(1)查看 OSS IO Monitoring (Cluster Level)監(jiān)控大盤。獲取 OSS 的 Bucket 中頻繁訪問的文件和文件路徑。通過對 counter 和 rate 倒排序定位到熱點目錄和熱點文件。

圖片

?由示例可看出,Bucket 中頻繁讀取的文件是/fio-data/read/5G.tmpfile,訪問的路徑為/fio-data/read。

(2) 查看 Container Storage IO Monitoring (Cluster Level)監(jiān)控大盤,根據(jù) TopN_Pod_Read_Path 面板的 counter 排序,找到有問題的 Pod。

圖片

?由示例可看出,存在問題的 Pod 是 oss-fio-read-sts-0。

(3)查看 Pod IO Monitoring (Pod Level)監(jiān)控大盤,選擇 Pod 為 oss-fio-read-sts-0,根據(jù) HotSpot Path of Top Read Operation 面板的 counter 和 rate 倒排序,找到 Pod 中頻繁訪問的文件和文件路徑。

圖片

?由示例可看出,Pod 中頻繁讀取的文件/fio-data/read/5G.tmpfile,訪問的路徑為/fio-data/read。

(4)根據(jù)以上示例分析,通過開啟 OSSFS Cache 來實現(xiàn)單機的緩存命中,參考文末文檔。也可以開啟分布式緩存 Fluid 緩存熱點數(shù)據(jù),來解決頻繁讀取熱點數(shù)據(jù)問題。04

4.掛載失敗事件透出

系統(tǒng)檢測到文件系統(tǒng)掛載失敗并透出事件,事件中心發(fā)送報警事件通知用戶 “文件系統(tǒng)掛載失敗”,用戶點擊鏈接定位到問題 Pod 的掛載失敗事件的詳細內(nèi)容。

在本示例中,名稱為 default 命名空間下的 oss-fio-read-sts1-0 掛載數(shù)據(jù)卷失敗。失敗原因:掛載 OSS 時未找到相應(yīng)的 Secret。通過修復(fù) secret,設(shè)定正確的子賬號的 AK/SK,掛載卷恢復(fù)正常,報警解除。

圖片

四、小結(jié)

綜上所述,在企業(yè)生產(chǎn)環(huán)境下 Pod 數(shù)量多、規(guī)模大,環(huán)境復(fù)雜場景下,通過阿里云容器服務(wù) ACK 的存儲卷的 I/O 可觀測性可以幫助客戶快速、準(zhǔn)確地定位是哪個 Pod、哪個應(yīng)用占用了過多帶寬,元數(shù)據(jù)請求和數(shù)據(jù)請求資源,幫助客戶通過優(yōu)化策略、修改應(yīng)用等方式解決 I/O 性能問題,提升業(yè)務(wù)運行效率。

[1] 開啟 OSSFS Cache

https://github.com/aliyun/ossfs/blob/master/doc/man/ossfs.1#L59

[2] 數(shù)據(jù)加速 Fluid 概述

https://help.aliyun.com/document_detail/208335.html?

責(zé)任編輯:武曉燕 來源: 阿里巴巴中間件
相關(guān)推薦

2020-06-10 08:28:51

Kata容器I

2011-02-22 10:37:00

SQL ServerSQL Server 性能診斷

2011-10-21 14:28:19

BGPSDNIPv6

2012-07-02 09:30:49

2022-04-23 16:30:22

Linux磁盤性能

2025-02-03 09:53:42

2013-07-16 16:46:28

云計算

2011-02-25 09:16:00

SQLSQL Server IO

2014-07-28 16:47:41

linux性能

2015-09-24 09:17:55

應(yīng)用程序網(wǎng)絡(luò)存儲

2010-04-13 19:45:31

IPv6IPv4

2017-02-09 09:00:14

Linux IO調(diào)度器

2019-12-02 09:45:45

Linux IO系統(tǒng)

2024-11-29 09:47:44

AprEndpoin組件

2014-06-27 10:28:51

GoogleIO大會數(shù)字

2023-07-12 08:24:19

Java NIO通道

2017-09-01 12:26:18

Linux調(diào)度器系統(tǒng)

2024-02-02 11:24:00

I/O高并發(fā)場景

2023-06-26 07:39:10

2014-07-31 10:06:01

谷歌Google應(yīng)用
點贊
收藏

51CTO技術(shù)棧公眾號