Select Page
最佳化你的 NFS 效能,讓檔案伺服器也會飛

最佳化你的 NFS 效能,讓檔案伺服器也會飛


調整NFS(Network File System)的效能可以從多個角度進行,包括調整NFS伺服器和客戶端的參數、網絡配置、以及文件系統的選擇。

調整 NFS 參數:

NFS Server 端

  • 使用 NFSv4: NFSv4 提供更好的效能和安全性。
  • 根據工作負載調整 rpc.mountd.port 和 rpc.nfsd.port 參數的值。
  • 調整 nfsd.minthreads 和 nfsd.maxthreads 參數的值,以優化執行緒數量。
  • 調整 nfs.readahead 和 nfs.writebehind 參數的值,以優化讀寫緩衝區大小。

範例如下

我的主機是 4VPU,4G RAM來設計

修改 /etc/nfs.conf 文件(或你系統中相對應的配置文件),設置最小執行緒數為 8,最大執行緒數為 64

調整邏輯,將 nfsd.minthreads 和 nfsd.maxthreads 參數設置為與 CPU 核心的數量相同或是略高一些

[nfsd]
threads=8 64

編輯 /etc/sysctl.conf

# NFS Setup
nfsd.minthreads =8
nfsd.maxthreads = 64
nfs.readahead = 65536
nfs.writebehind = 262144

重啟主機

sudo service nfs-kernel-server start

NFS Client 端

  • 使用 NFSv4: NFSv4 提供更好的效能和安全性。
  • 調整 mount.nfs.rsize 和 mount.nfs.wsize 參數的值,以優化讀寫緩衝區大小。
  • 調整 mount.nfs.mountd_port 和 mount.nfs.nfsd_port 參數的值。

調整邏輯,將 mount.nfs.rsize 和 mount.nfs.wsize 參數設置為與 TCP MTU 相同或是略低一點

範例如下

sudo /etc/fstab

/etc/fstab

server:/path/to/share /mnt/nfs nfs rw,nfsvers=4,noatime,rsize=32768,wsize=32768 0 0

提高讀取的性能

mount -o async,noac,rsize=1048576 nfs://server/share /mnt

兼顧安全性以及效能的設定可以參考

mount -o async,noac,noatime,nodev,noexec,norecovery,rsize=1048576,tcp,nfsvers=4 nfs://server/share /mnt

讀取大型文件,如影音,透過 readahead 來幫助提高性能,這裡將 readahead 設置為 128 塊(每塊的大小依賴於系統配置,通常是 4KB)

sudo mount -t nfs -o rsize=32768,wsize=32768,readahead=128 server:/path/to/share /mnt/nfs

調整網路配置:

  • 使用高性能網路設備。
  • 調整 TCP/IP 參數,例如 tcp_keepalive 和 tcp_window_size

常見的 NFS 掛載選項

  • async: 允許 NFS 客户端在將數據寫入磁碟之前將其發送到伺服器。這可以提高寫入性能,但可能會導致數據丟失。
  • bg: 在後台掛載 NFS 共享。
  • intr: 允許 NFS 客户端在伺服器無響應時中斷操作。
  • noac: 不使用 NFS 屬性緩衝區。這可以提高性能,但可能會導致文件屬性不一致。
  • noatime: 不更新文件的訪問時間。這可以提高性能,但可能會導致文件元數據不準確。
  • nodev: 不將 NFS 共享上的設備映射到本地設備。
  • noexec: 不允許在本地執行 NFS 共享上的可執行文件。
  • norecovery: 在 NFS 伺服器發生故障時不嘗試重新掛載共享。
  • ro: 以唯讀模式掛載 NFS 共享。
  • rsize: 設置 NFS 客户端每次讀取操作從伺服器接收的最大數據量。
  • rw: 以讀寫模式掛載 NFS 共享。
  • soft: 在 NFS 伺服器無響應時允許 NFS 客户端重試操作。
  • tcp: 使用 TCP 而不是 UDP 進行 NFS 通信。
  • timeo: 設置 NFS 客户端在伺服器無響應之前等待的時間。
  • nfsvers: 指定 NFS 協議版本

其中最常用到的是 async, noac, noatime, rsize, nfsvers.

noatime

多數情況下,禁用對文件訪問時間的更新可以提升性能,因為它減少了對伺服器的寫操作。

rsize和wsize:

對於現代網絡,32768(32KB)或65536(64KB)是比較常見的設定值,能夠提供良好的效能。你可以從這個基點開始,進行實際的性能測試來找到最適合你環境的值。

NFS 版本的比較說明 (nfsvers)

  • NFSv4 比較新,提供了更好的安全性(如Kerberos身份驗證)和效能優化,包括更高效的文件鎖定機制和狀態保持功能。
  • NFSv3 在一些舊系統上仍然很流行,對於不需要v4的安全性增強的環境來說,可能仍是一個好選擇。在某些情況下,它可能由於其無狀態性而提供更好的效能。

監控與調整

使用 nfsstat 這樣的工具來監控 NFS 伺服器的性能,然後根據實際運行情況進行調整。

sudo apt install nfsstat

之後就可以輸入 nfsstat 取得相關資訊

nfsstat

高效能伺服器

使用 NFS Ganesha: NFS Ganesha 高性能的 NFS 代理伺服器

探索Perplexity:黃仁勳與貝佐斯投資的AI知識平台

探索Perplexity:黃仁勳與貝佐斯投資的AI知識平台

在當今快速發展的人工智慧領域中,Perplexity作為一家新興的對話式AI平台公司,於2022年8月成立,迅速吸引了眾多目光。這家新創公司不僅得到了科技界巨頭如黃仁勳和傑夫·貝佐斯等人的重金注資,更是以其創新的知識搜尋平台而聞名。Perplexity提供了一種全新的搜尋體驗,將傳統的網路搜尋與最先進的人工智慧技術結合起來,為使用者遇到的每個問題提供高品質的答案。

Perplexity的特色

  1. 注資背景顯赫:得到黃仁勳、貝佐斯等科技界巨頭的注資,顯示了市場對Perplexity業務模式和未來發展潛力的高度認可。
  2. 創新的知識搜尋平台:Perplexity是一個結合了網路搜尋與人工智慧的對話式AI平台,致力於解決用戶可能遇到的各種問題,無論是學術問題、日常疑惑還是專業咨詢。
  3. 高品質的答案:Perplexity憑藉先進的AI技術,提供的答案品質高於一般搜尋引擎,更加準確、有深度且可靠。
  4. 提供參考來源:為了確保信息的透明度和可信度,Perplexity在提供答案的同時,會附上參考來源,讓用戶可以進一步查證。
  5. 自動推薦追問問題:該平台能夠根據用戶的查詢自動推薦相關的追問問題,豐富用戶的探索過程。
  6. 搜尋YouTube影片:Perplexity不僅限於文本搜尋,還能夠搜索YouTube影片,為用戶提供更多樣化的信息來源。
  7. Chrome擴充工具「Perplexity – AI Companion:Perplexity還推出了一款Chrome擴充工具,讓用戶在瀏覽網頁時能夠更方便地使用其服務。

至於Perplexity的商業模式,它提供了專業版服務,專業版用戶支付每月20美元的費用,便可無限制使用其「Copilot」功能,享受客服支援,甚至可以上傳自己的資料請Perplexity分析。截至目前,Perplexity已擁有約10萬名付費用戶,顯示出其服務的受歡迎程度以及市場的廣大潛力。

https://www.perplexity.ai/

Nginx proxy_cache 進階設定,放飛你的 wordpress 主機

定義 proxy cache path

先找到設定檔,通常在

sudo nano /etc/nginx/nginx.conf

找到 http ,在他的配置中設定

http {
    proxy_cache_path /path/to/cache levels=1:2 keys_zone=my_cache:10m max_size=10g inactive=60m use_temp_path=off;

    ...
}


緩存配置

  • 緩存文件儲存的路徑: /path/to/cache
  • 緩存目錄的層級: 1:2
  • 緩存區域的名稱和大小: my_cache:10m
    • 緩存區域名稱: my_cache
    • 緩存區域大小: 10MB
  • 緩存的最大大小: 10GB
  • 在指定的時間內沒有被訪問的緩存文件將被刪除: 60m
  • 直接在緩存路徑上操作,而不是使用臨時路徑: off

詳細說明

  • 緩存文件儲存的路徑

緩存文件將儲存在指定的目錄中。您可以根據您的需求設置此路徑。

  • 緩存目錄的層級

此設置控制緩存目錄的層級結構。例如,設置為 1:2 表示將使用兩個層級的目錄來儲存緩存文件。第一層級將包含 10 個子目錄,第二層級將包含 100 個子目錄。

  • 緩存區域的名稱和大小

此設置控制緩存區域的名稱和大小。緩存區域是緩存文件的分組。您可以根據您的需求設置多個緩存區域。

  • 緩存的最大大小

此設置控制緩存的最大大小。超過此大小時,最舊的緩存文件將被刪除。

  • 在指定的時間內沒有被訪問的緩存文件將被刪除

此設置控制在指定的時間內沒有被訪問的緩存文件將被刪除。

  • 直接在緩存路徑上操作,而不是使用臨時路徑

修改設定檔,配置 proxy cache

找到 config 中的 server ,在裡面添加相關設定

server {
    listen 80;
    server_name yourdomain.com;

    location / {
        proxy_pass http://your_backend_server;
        proxy_cache my_cache;
        proxy_cache_revalidate on;
        proxy_cache_min_uses 1;
        proxy_cache_use_stale error timeout updating http_500 http_502 http_503 http_504;
        proxy_cache_lock on;
        proxy_cache_valid 200 302 10m;
        proxy_cache_valid 404 1m;
    }
}

反向代理配置

  • 後端伺服器的地址: proxy_pass
    • 此設置指定後端伺服器的地址。後端伺服器是 Nginx 將請求轉發到的伺服器。
  • 使用之前定義的緩存區域: proxy_cache
    • 此設置指定要使用的緩存區域。緩存區域是 Nginx 用於儲存靜態內容的區域。
  • 啟用後,會在緩存過期時向後端伺服器驗證緩存內容是否仍然有效: proxy_cache_revalidate
    • 此設置控制是否在緩存過期時向後端伺服器驗證緩存內容是否仍然有效。默認情況下,Nginx 將在緩存過期時直接使用緩存內容。
  • 在緩存內容之前,請求必須達到指定的次數: proxy_cache_min_uses
    • 此設置控制在緩存內容之前,請求必須達到指定的次數。這可以防止頻繁更新的內容被緩存。
  • 在後端伺服器錯誤或超時時,使用舊的緩存數據: proxy_cache_use_stale
    • 此設置控制在後端伺服器錯誤或超時時是否使用舊的緩存數據。默認情況下,Nginx 將在後端伺服器錯誤或超時時向客戶端返回錯誤。
  • 在更新緩存內容時,防止多個請求同時向後端伺服器發送: proxy_cache_lock
    • 此設置控制在更新緩存內容時是否防止多個請求同時向後端伺服器發送。這可以防止後端伺服器過載。
  • 設定不同響應狀態碼的緩存時間: proxy_cache_valid
    • 此設置控制不同響應狀態碼的緩存時間。您可以根據您的需求設置不同的緩存時間。

重新開啟 Nginx 讓設定生效

sudo nginx -t
sudo systemctl reload nginx

快取的時間設定

Nginx 支持多種時間單位来指定 cache 的有效期,这包括:

  • s
  • m 分鐘
  • h 小時
  • d
  • w
  • M 月(30 天)
  • y 年(365 天)

舉例子

快取檔案 30 秒

proxy_cache_valid 200 302 30s;

刪除快取的方法

1.直接刪除快取檔案

找到你設定的路徑,直接刪除檔案即可

sudo rm -rf /path/to/cache/*

2.使用 Nginx Cache Purge

如果你在編譯 Nginx 有加入 cache purge ,就可以用下面的設定,如果你是用預設安裝,通常不包含 cache purge,可以看下我之前的安裝教學

location /purge_cache/ {
    proxy_cache_purge my_cache $scheme$host$request_uri;
}
如何踏出開發 Microsoft OpenAI API 的第一步

如何踏出開發 Microsoft OpenAI API 的第一步

想要做自己的 chatGPT ? 想要用自己的 DATA 訓練機器人? 不知道甚麼是 VectorDB,或是想要企業的聊天機器人應用? 還是想要結合EXCEL回答問題,還是想用機器人幫你完成各式各樣的任務。

第一步驟推薦看下面的文章

GitHub – xuhaoruins/Azure-OpenAI-App-Innovation-Workshop

Azure_App_Innovation_Inspiration_Demo · Streamlit (haxu.dev)