日本熟妇hd丰满老熟妇,中文字幕一区二区三区在线不卡 ,亚洲成片在线观看,免费女同在线一区二区

性能說明FAQ

本文介紹NAS SMB/NFS協議文件系統性能相關的常見問題及解決方案。

文件系統的讀寫吞吐閾值與什么相關?

  • 通用型NAS

    單個文件系統的讀寫性能上限(峰值)與文件系統的當前使用容量線性相關且成正比例關系,即使用容量越大,吞吐性能上限(峰值)越高。更多信息,請參見通用型NAS。

  • 極速型NAS

    單個文件系統的讀寫性能隨配置容量的增長呈階梯式增長。更多信息,請參見極速型NAS

什么是IOPS?IOPS與吞吐、讀寫塊大小、時延有什么關系?

IOPS(Input/Output Per Second)即每秒IO操作的次數(讀寫次數)。

讀寫塊大小、IOPS、吞吐量、寫入次數和時延的關系公式為:

吞吐量=IOPS*讀寫塊大小;IOPS=讀寫次數/任務整體時延

例如,容量型NAS文件系統1 MiB寫時延約為100 ms,8 KiB寫時延約為15 ms,4 KiB寫時延約為10 ms,最大支持128個并發任務。當您需要1s內寫1 MiB數據時,可以有多種寫入方案,如下列舉其中幾種:

序號

讀寫塊大小

并發數

寫入次數

任務整體時延

IOPS

吞吐量

說明

方案一

4 KiB

1

250

10 ms*250=2.5s

250/2.5s=100

4 KiB*100=400 KiB/s

小塊讀寫加上低并發數,導致吞吐和時延性能都很差,無法達到1 MiB/s的吞吐目標。

方案二

1 MiB

1

1

100 ms

1/0.1s=10

1 MiB*10=10 MiB/s

相較方案一僅提高讀寫塊大小,吞吐和時延性能有提升,達到了1 MiB/s的吞吐目標,但任務整體時延較長。

方案三

4 KiB

125

250

10 ms*(250/125)=20 ms

250/0.02s=12500

4 KiB*12500≈49 MiB/s

相較方案一僅提高任務并發數,吞吐和時延性能有提升,達到了1 MiB/s的吞吐目標,任務整體時延也很短,但IOPS較高,容易觸及文件系統的IOPS上限。

方案四

8 KiB

125

125

15 ms*(125/125)=15 ms

125/0.015s≈8333

8 KiB*8333≈65 MiB/s

相較方案一同時提高讀寫塊大小和任務并發數,吞吐和時延性能有提升,達到了1 MiB/s的吞吐目標,任務整體延時最短,IOPS較低,不容易觸及文件系統的IOPS上限。

讀寫吞吐超過閾值會有什么影響?

如果您或應用程序發出的請求吞吐超過閾值時,NAS會自動對該請求限速,進而導致延遲增高。

通用型NAS可以通過Truncate命令提升吞吐閾值。具體操作,請參見如何提升通用型NAS文件系統的讀寫吞吐閾值? 。

極速型NAS可以通過擴容文件系統提升吞吐閾值。具體操作,請參見極速型NAS擴容

關于通用型NAS文件系統和極速型NAS文件系統的吞吐閾值,請參見通用型NAS性能指標極速型NAS性能指標。

如何提升通用型NAS文件系統的讀寫吞吐閾值?

通用型NAS文件系統的讀寫吞吐隨文件系統的使用容量線性增長。文件系統讀寫吞吐與使用容量的關系,請參見通用型NAS產品規格

通過在文件系統寫入空洞文件或使用Truncate命令生成一個文件來增加文件系統使用容量,從而提升文件系統的讀寫吞吐。同時,空洞文件和Truncate命令生成的文件在阿里云NAS上占用實際容量,按實際大小計費。更多信息,請參見通用型NAS計費

例如在容量型文件系統寫入1 TiB文件,其讀寫吞吐可提升150 MB/s;在性能型文件系統寫入1 TiB文件,其讀寫吞吐可提升600 MB/s。

  • Linux

    支持使用Truncate命令生成文件提升讀寫吞吐。

    sudo truncate --size=1TB /mnt/sparse_file.txt

    其中,/mnt為文件系統在計算節點上的掛載路徑。

  • Windows

    支持通過在文件系統寫入空洞文件提升讀寫吞吐。

    fsutil file createnew Z:\sparse_file.txt 1099511627776

    其中,Z:\為文件系統在計算節點上的掛載路徑。

如何解決Linux操作系統上訪問NAS性能不好?

  • 方案一:通過nconnect參數提升單臺ECS訪問NAS的吞吐

    nconnect參數是NFS客戶端Linux掛載選項,通過在客戶端和服務器之間建立更多的TCP傳輸連接來提高吞吐性能。經過測試,使用nconnect參數可以將單ECS訪問NAS的吞吐提升3倍~6倍,達到3 GB/s。

    適用場景

    單ECS上多并發I/O讀寫(并發大于16)。

    前提條件

    Linux內核版本需5.3及以上版本。

    操作步驟

    mount命令中增加nconnect參數,建議nconnect=4,命令示例如下。

    sudo mount -t nfs -o vers=3,nolock,proto=tcp,rsize=1048576,wsize=1048576,hard,timeo=600,retrans=2,noresvport,nconnect=4 
    重要

    nconnect提高的是單個ECS訪問NAS的吞吐能力,并不會提高NAS文件系統自身的吞吐閾值。對于單并發,小數據塊,延遲敏感型業務,開啟nconnect會引起延遲增加,不建議開啟。

  • 方案二:通過修改sunrpc.tcp_slot_table_entries提升單臺ECS訪問NAS的吞吐

    Linux kernel中sunrpc決定了NFS單個鏈接內的通信slot數量。不同的Linux版本采用了不同的配置。slot配置過高可能引起延遲增加,配置過低會引起吞吐不足。當您需要大吞吐時,建議slot配置為128。需要較低延遲時,slot配置為16及以下。

    說明

    調整sunrpc.tcp_slot_table_entries的配置效果遠差于nconnect。建議5.3及以上內核操作系統使用nconnect參數進行調節。

    適用場景

    單ECS上多并發I/O讀寫,且內核版本低于3.10。

    操作步驟

    請參見如何修改同時發起的NFS請求數量?

為什么使用Nginx寫日志到文件系統耗時很長?

  • 背景信息:

    與Nginx日志相關的指令有兩條。log_format用來設置日志的格式,access_log用來指定日志文件的存放路徑、格式的名稱和緩存大小。

  • 問題描述:

    Nginx寫日志到文件系統耗時很長,寫入性能差。

  • 問題原因:

    access_log指令中的日志文件路徑包含變量,每次寫日志時都會重新打開文件,再寫入日志,然后關閉文件。NAS為了保證數據的可見性,會在關閉文件時將數據寫回服務端,性能消耗較大。

  • 解決方案:

    • 方案一:刪除access_log指令中的變量,使用固定路徑存儲日志文件。

    • 方案二:使用open_log_file_cache指令設置經常被使用的日志文件描述符緩存,提高包含變量的日志文件存放路徑的性能。具體配置,請參見open_log_file_cache。

      建議配置:

      open_log_file_cache max=1000 inactive=1m valid=3m min_uses=2;

為什么SMB協議文件系統執行IO操作會延遲?

  • 問題描述:

    通過掛載點直接訪問SMB協議文件系統,在執行IO操作會有幾分鐘的等待時間。

  • 問題原因:

    • 安裝了NFS客戶端,實際業務不使用,產生等待時間。

    • 啟用了WebClient服務,導致Internet文件服務器登錄SMB協議文件系統失敗。

    • 注冊表配置項中包含了NFS權限Nfsnp,導致打開文件失敗。

  • 解決方案:

    1. 首次訪問SMB文件系統時,請ping掛載點,查看計算節點和文件系統連通性,以及時延是否在正常范圍。

      • 如果執行ping命令失敗,請檢查您的網絡設置,確保網絡連接正常。

      • 如果延時較長,請ping掛載IP。當ping IP比ping DNS延時小很多,判斷可能是DNS問題,請檢查您的DNS服務器配置。

    2. 如果已安裝NFS客戶端,且用不到NFS服務,請刪除NFS客戶端。

    3. 禁用WebClient服務。

    4. 查看注冊表配置項HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\NetworkProvider\Order\ProviderOrder,如果注冊值包含Nfsnp,請刪除Nfsnp,然后重啟實例。

說明
  • 您可以使用fio工具,查看性能指標是否異常。

    fio.exe --name=./iotest1 --direct=1 --rwmixread=0 --rw=write --bs=4K --numjobs=1 --thread --iodepth=128 --runtime=300 --group_reporting --size=5G --verify=md5 --randrepeat=0 --norandommap --refill_buffers --filename=\\<mount point dns>\myshare\testfio1
  • 建議您使用大數據塊進行IO讀寫操作,如果數據塊較小,會消耗更多的網絡資源。如果不能修改數據塊大小,可以通過構造BufferedOutputStream,將具有指定緩沖區大小的數據寫入。

為什么Windows server SMB協議IO操作會延遲?

  • 問題原因:

    Windows SMB客戶端默認不開啟large mtu選項,因此影響IO性能的提升。

  • 解決方案:

    您可以通過修改注冊表配置項來開啟large mtu選項,注冊表路徑:HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\LanmanWorkstation\Parameters

    在該路徑下,增加DWORD類型的鍵,命名為DisableLargeMtu,設置其值為0,重啟后才能生效。

如何提升IIS訪問NAS的性能?

  • 問題原因:

    IIS采用NAS Share的方式訪問NAS,在訪問一個文件時,IIS后臺會多次訪問NAS。不同于訪問本地文件系統,每次訪問NAS至少要有一次網絡交互,雖然每次訪問的時長很短,但是多次訪問時長疊加可能會造成客戶端響應總時間較長。

  • 解決方案:

    1. 請您使用SMB重定向器組件,進行優化。具體操作,請參見SMB2 Client Redirector Caches Explained。

      其中,注冊表路徑為HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\LanmanWorkstation\Parameters。請將如下三個配置項調至600及以上。

      • FileInfoCacheLifetime

      • FileNotFoundCacheLifetime

      • DirectoryCacheLifetime

      說明

      如果三個注冊表配置項都不存在:

      1. 請確認使用的是SMB文件系統。

      2. 確認Windows版本是否支持這三個注冊表項配置項。如果Windows版本支持而注冊表配置項不存在,請手動創建。具體操作,請參見Performance tuning for file servers

    2. 建議把IIS訪問頻繁的JS/CSS等網頁程序相關的內容存放在本地。

如果當前IIS讀寫性能無法滿足您的業務需求,請提交工單處理。

為什么執行ls命令時,有卡頓或者無響應?

  • 問題現象

    在執行目錄遍歷的操作中出現卡頓或無響應。例如,執行ls命令、包含通配符*?的操作、執行rm -rf命令及getdents系統調用等。

  • 原因分析

    • 執行目錄遍歷操作時,如果此目錄同時正在被修改(如創建、刪除、重命名文件),目錄遍歷會由于緩存頻繁失效而響應非常慢。

    • 對大目錄執行目錄遍歷操作時,目錄遍歷會由于緩存淘汰而響應非常慢。

  • 解決方案

    • 避免目錄體量過大,控制單目錄下文件數量小于1萬個。

    • 執行目錄遍歷操作時,不要頻繁對目錄進行修改。

    • 執行目錄遍歷操作時,如果目標目錄體量較大(包含大于1萬個文件),且不需要頻繁修改目錄,您可以通過NFSv3掛載,并添加nordirplus參數,該措施能在一定程度上提速,請您驗證后使用。更多信息,請參見掛載參數。

如何提升Linux 5.4及以上版本內核的NFS順序讀取性能?

NFS read_ahead_kb參數定義了Linux內核在順序讀取操作期間要提前讀取或預取的數據大?。ㄒ訩B為單位)。

對于5.4.* 之前的Linux內核版本,read_ahead_kb參數的值是通過NFS_MAX_READAHEAD乘以rsize(在掛載選項中設置的客戶端讀取數據大?。┑闹祦碓O置的。從Linux內核版本5.4.*開始,NFS客戶端使用默認的read_ahead_kb值128 KB。因此建議使用推薦的掛載選項時,read_ahead_kb參數的值增加到15 MB。

掛載文件系統后,可以使用以下命令重置read_ahead_kb參數值。其中,nas-mount-point請替換為掛載文件系統的本地路徑;read-ahead-kb請替換為所需的讀取或預取的數據大?。ㄒ訩B為單位)。

device_number=$(stat -c '%d' nas-mount-point)
((major = ($device_number & 0xFFF00) >> 8))
((minor = ($device_number & 0xFF) | (($device_number >> 12) & 0xFFF00)))
sudo bash -c "echo read-ahead-kb > /sys/class/bdi/$major:$minor/read_ahead_kb"

以下命令以掛載文件系統的本地路徑為/mnt為例,將read_ahead_kb的讀取或預取數據大小設置為15 MB。

device_number=$(stat -c '%d' /mnt)
((major = ($device_number & 0xFFF00) >> 8))
((minor = ($device_number & 0xFF) | (($device_number >> 12) & 0xFFF00)))
sudo bash -c "echo 15000 > /sys/class/bdi/$major:$minor/read_ahead_kb"