為什麼我的 EFS 檔案系統效能較慢?

2 分的閱讀內容
0

我的 Amazon Elastic File System (Amazon EFS) 效能非常慢。我想找出原因並疑難排解問題。

簡短說明

Amazon EFS 的分散式多可用區域架構會造成每個檔案操作出現小規模的延遲額外負荷。由於額外負荷會分攤於較大量的資料上,因此整體輸送量一般會隨著平均 I/O 大小增加而增加。

Amazon EFS 效能取決於多個因素,包括下列因素:

  • EFS 的儲存體類別。
  • 效能和輸送量模式。
  • 在 EFS 上執行的操作類型 (例如中繼資料密集等等)。
  • 儲存在 EFS 中的資料屬性 (例如檔案大小和數量)。
  • 掛載選項。
  • 用戶端限制。

解決方法

EFS 的儲存體類別

如需詳細資訊,請參閱效能摘要

效能和輸送量模式

效能模式

Amazon EFS 提供兩種效能模式:一般用途和最大 I/O。應用程式可以彈性地將其 IOPS 擴展至與效能模式相關的限制。

若要決定要使用哪種效能模式,請參閱效能模式

輸送量模式

以檔案為基礎的工作負載通常會在短時間內驅動高輸送量,但在較長的時間內驅動較低的輸送量。Amazon EFS 的設計可在一段時間內爆發至高輸送量水準。

設定的輸送量和 IOPS 會影響 Amazon EFS 的效能。

這是測量工作負載要求基準的最佳實務,以協助您選擇適當的輸送量和效能模式。選取佈建的輸送量時,請選取適合您工作負載要求的值。若要分析檔案系統所取用的輸送量和 IOPS,請參閱使用 Amazon EFS 的指標數學

Amazon EFS 可以透過三種輸送量模式來擴充至 PB 等級的儲存磁碟區:高載、彈性和佈建。如果您使用高載輸送量,Amazon EFS 上的輸送量會隨檔案系統成長而擴展。如果您使用佈建輸送量模式,您可以立即佈建檔案系統的輸送量,而不受儲存的資料量的影響。您可以使用彈性輸送量,根據工作負載提高或降低輸送量。如需關於輸送量模式的詳細資訊,請參閱 Amazon EFS 高載抵用金如何運作?

在 EC2 執行個體上執行的操作類型

中繼資料 I/O 操作

在下列情況下,EFS 效能會受到影響:

  • 當檔案大小很小時,因為其是分散式系統。分散式架構會造成每個檔案操作出現小規模的延遲額外負荷。鑒於每次操作的延遲,且額外負荷會分攤於更多資料上,因此整體輸送量一般會隨著平均 I/O 大小增加而增加。
  • 如果工作負載或操作會連續產生許多小檔案,共用檔案系統的效能便會受到影響。這會導致每次操作的額外負荷增加。
  • 如果您的應用程式執行中繼資料密集的操作,例如「ls」、「rm」、「mkdir」、「rmdir」、「lookup」、「getattr」或「setattr」等等,就會發生中繼資料 I/O。任何需要系統擷取特定區塊位址的操作都會被視為是中繼資料密集型工作負載。如需詳細資訊,請參閱下列內容:
    計量: Amazon EFS 如何報告檔案系統和物件大小效能秘訣

掛載選項

  • 如果您使用 amazon-efs-utils 掛載檔案系統,則預設為套用建議的掛載選項
  • 如果您使用非預設的掛載選項,效能可能會降低。例如,如果您使用較低的 rsizewsize,或如果您降低或關閉屬性快取。檢查 mount 命令的輸出,以查看目前的掛載選項:

如需詳細資訊,請參閱在 EC2 執行個體上掛載檔案系統並進行測試

NFS 用戶端版本

與 NFSv4.0 能 (每秒不到 1,000 個檔案) 相比,網路檔案系統 (NFS) 4.1 版 (NFSv4) 通訊協定可為平行小型檔案讀取操作 (每秒超過 10,000 檔案) 提供更好的效能。

用戶端限制

EC2 執行個體的瓶頸

如果您使用檔案系統的應用程式無法達到 EFS 的預期效能,請最佳化應用程式。此外,也可以對託管應用程式的主機或服務進行基準測試,例如 Amazon EC2、AWS Lambda 等等。EC2 執行個體上的資源短缺可能會影響應用程式有效使用 EFS 的能力。

若要檢查 EC2 是否佈建不足,無法達到應用程式要求,請監控 Amazon EC2 CloudWatch 指標,例如 CPU、Amazon Elastic Block Store (Amazon EBS) 等等。分析應用程式架構和資源要求的各種指標,將有助於您判斷是否應根據要求重新設定應用程式或執行個體。

使用 4.0 版以上的 Linux 核心版本

為了獲得最佳效能,並避免多個已知的 NFS 用戶端問題,最佳實務是搭配 Linux 核心 4.0 版或更新版本使用 AMI。

此規則的例外是 RHEL 和 CentOS 7.3 及更新版本。這些作業系統的核心已收到套用至 NFS v4.1 之修正和增強功能的向後移植版本。如需詳細資訊,請參閱 NFS 支援

複製檔案

使用 cp 命令複製檔案時,您可能會覺得緩慢。這是因為複製命令是序列操作,也就是說一次複製一個檔案。如果每個檔案的檔案大小很小,則傳送該檔案的輸送量就會很小。

傳送檔案時,您也可能會注意到延遲。EFS 的分散式性質意味著其必須複寫到所有掛載點,因此每個檔案操作都會有額外負荷。因此,預期會產生延遲行為。

建議

最佳做法是執行平行 I/O 操作,例如使用 rsync。如果您使用 rsync,請注意 cp 和 rsync 在序列(單執行緒)操作中運作,而非在平行操作中。這會減緩複製程序。使用工具,例如 fpartNU Parallel。**Fpart ** 是有助於您排序檔案樹狀目錄並將其封裝至「分割區」的工具。Fpart 隨附名為 fpsync 的 Shell 指令碼 (會包裝 fpartrsync),以平行啟動數個 rsync。**Fpsync ** 提供自己的內嵌排程器。此方法完成工作的速度比更常用的序列方法還快。

如需詳細資訊,請參閱 Amazon EFS 效能

相關資訊

NFS 用戶端配額

AWS 官方
AWS 官方已更新 1 年前