博客 / 詳情

返回

基於飛騰騰雲S2500的ATS部署及調優指南(反向代理篇)

【寫在前面】飛騰開發者平台是基於飛騰自身強大的技術基礎和開放能力,聚合行業內優秀資源而打造的。該平台覆蓋了操作系統、算法、數據庫、安全、平台工具、虛擬化、存儲、網絡、固件等多個前沿技術領域,包含了應用使能套件、軟件倉庫、軟件支持、軟件適配認證四大板塊,旨在共享尖端技術,為開發者提供一個涵蓋多領域的開發平台和工具套件。點擊這裏開始你的技術升級之旅吧

image.png

本文分享至飛騰開發者平台《基於飛騰騰雲S2500的ATS部署及調優方法(反向代理篇)》

1 軟件介紹

  ATS全稱為Apache Traffic Server,是一種高性能、模塊化的HTTP緩存代理服務器。HTTP代理通常分為正向代理、反向代理和透明代理。本文主要介紹HTTP反向代理,反向代理是指以代理服務器來接受Internet上的連接請求,然後將請求轉發給內部網絡上的服務器,並將從內網服務器上得到的結果返回給Internet上請求連接的客户端。如下圖,Traffic
Server充當代理服務器,Origin Server是內網中的源服務器,整個內網對外表現為一個服務器。

image.png

(引用自https://baike.baidu.com/item/Apache Traffic Server/4075996?fr=aladdin)

2 環境要求

2.1 硬件要求

用途 型號
代理服務器 飛騰騰雲S2500處理器服務器
源服務器 飛騰騰雲S2500處理器服務器

2.2 軟件要求

軟件名 對應版本
trafficserver 7.1.9
httpd 2.4.49
LuaJIT 2.1
apr 1.7.0
apr-util 1.6.1
pcre 8.45

3 平台部署

  下面將詳細介紹源服務器httpd及代理服務器ATS的搭建步驟,並對平台進行驗證。

3.1 部署httpd

  部署httpd的步驟主要包括:
  第一步,獲取源碼;第二步,編譯安裝apr;第三步,編譯安裝apr-util;第四步,編譯安裝pcre;第五步,編譯安裝httpd;第六步,配置httpd端口。

3.2 移植ATS

  移植ATS的步驟主要包括:

  第一步,獲取ATS源碼;
  第二步,替換LuaJIT;
  第三步,修復非法訪問;由於7.1.9版本的ATS在aarch64上運行時存在內存地址非法訪問的BUG,故而需要修改文件/home/trafficserver-7.1.9/lib/ts/ink_queue.h中的代碼;
  第四步,安裝依賴;
  第五步,編譯與安裝;
  第六步,配置端口
  第七步,配置映射;
  第八步,運行驗證。其中,在進行驗證時,先啓動apache服務;然後,啓動ATS服務;最後,瀏覽器訪問ATS代理服務器IP或域名,若成功打開網頁則表示部署成功。

4 ATS調優

4.1 調優目的

  通過調整ATS配置文件來有效地提高ATS應用性能。

4.2 調優方法

4.2.1 物理綁核

  1. 使用numactl控制ATS使用的CPU及內存,防止ATS的manager進程跨NUMA。

numactl --cpunodebind=0,1 --membind=0,1 trafficserver start

  2. 使用cgroup限制ATS線程使用的資源,防止ATS的server線程跨NUMA。

#!/bin/bash 
PID=\$(pidof traffic_server) 
ATS_CGROUP_CPU_DIR=/sys/fs/cgroup/cpuset/trafficserver 
if [ ! -d \$ATS_CGROUP_CPU_DIR ]; then 
mkdir \$ATS_CGROUP_CPU_DIR 
fi 
cd \$ATS_CGROUP_CPU_DIR
echo "0-15" \> cpuset.cpus 
echo "0" \> cpuset.mems 
echo \$PID \> cgroup.procs |

4.2.2 配置ATS線程

選項 説明
CONFIG proxy.config.exec_thread.autoconfig INT 0 配置固定線程數量,不使用自動增加線程功能,配合cgroup可以有效防止線程跨片。
CONFIG proxy.config.exec_thread.limit INT 16 每個核啓動16個線程。
CONFIG proxy.config.accept_threads INT 16 對數據接收使用專門的線程處理。
CONFIG proxy.config.task_threads INT 32 處理http請求的線程數量。

4.2.3 配置ATS緩存

  文件storage.config決定了ATS磁盤緩存的組成結構,文件內容格式為:

pathname size [ volume=number ] [ id=string ]

  例如:/root/ats-cache0 100G,表示ATS磁盤緩存有100G,且保存在分區/root/ats-cache0中。文件中可以指定多個分區及大小,它們共同組成ATS磁盤緩存。除了磁盤緩存,ATS還可以通過records.config文件中的proxy.config.cache.ram_cache.size選項來配置內存緩存:

CONFIG proxy.config.cache.ram_cache.size INT 10G 

4.2.4 緩存預熱

  ATS重啓或首次啓動時,緩存默認為空倉狀態,需要使用工具將期望被緩存的文件進行遍歷訪問,使緩存中包含所有期望被緩存的文件,即達到預熱充分狀態。預熱狀態可通過traffic_top工具中的Disk Used和Ram Used大小來判斷,如果它們的大小不再變化則認為是充分預熱。

4.3 調優示例

  示例環境為一台飛騰騰雲S2500處理器服務器,ATS和httpd同時部署在飛騰騰雲S2500處理器服務器上,但佔用端口不同,其中apache(httpd)服務器中共有兩百萬個數據供客户請求。使用思博倫測試儀模擬http請求,對被測服務器進行web cache性能測試,調優過程如下:

  1) 默認配置下,充分預熱後測出TPS為27192;

  2) 將ATS線程上限增加至32個,即CONFIG proxy.config.task_threads INT
32,充分預熱後測出TPS為46315;

  3) 在2的基礎上,固定內存緩存10G,即CONFIG proxy.config.cache.ram_cache.size INT
10G,充分預熱後測出TPS為47397;  3)

  4) 在3的基礎上,關閉RAM歷史命中檢測(不管之前是否有命中都會將新數據寫到RAM中),即CONFIG
proxy.config.cache.ram_cache.use_seen_filter 0,充分預熱後測出TPS為53649;

  5) 在4的基礎上,對ATS服務進行綁核0-63,充分預熱後測出TPS為60178;

  6) 在5的基礎上,關閉httpd的日誌,充分預熱後測出TPS為62210。

  下表是優化前後的web cache性能測試結果:

目標項 優化前 優化後
TPS 27192 62210

image.png

  上圖是web cache性能測試結果柱形圖,可以看出經過調優後的web cache性能提升顯著。

5 常見問題

  1. apr-util編譯報錯

  如果報錯內容如下圖所示:

image.png

  則通過安裝expat-devel包可以解決。


推薦閲讀

  • SPECweb2009調優指南
  • 基於飛騰騰雲S2500的SPECWeb2009部署指南

歡迎廣大開發者來飛騰開發者平台獲取更多前沿技術文檔及資料

如開發者在使用飛騰產品有任何問題可通過在線工單聯繫我們



版權所有。飛騰信息技術有限公司 2023。保留所有權利。

未經本公司同意,任何單位、公司或個人不得擅自複製,翻譯,摘抄本文檔內容的部分或全部,不得以任何方式或途徑進行傳播和宣傳。

商標聲明

Phytium和其他飛騰商標均為飛騰信息技術有限公司的商標。

本文檔提及的其他所有商標或註冊商標,由各自的所有人擁有。

注意

本文檔的內容視為飛騰的保密信息,您應當嚴格遵守保密任務;未經飛騰事先書面同意,您不得向任何第三方披露本文檔內容或提供給任何第三方使用。

由於產品版本升級或其他原因,本文檔內容會不定期進行更新。除非另有約定,本文檔僅作為使用指導,飛騰在現有技術的基礎上盡最大努力提供相應的介紹及操作指引,但飛騰在此明確聲明對本文檔內容的準確性、完整性、適用性、可靠性的等不作任何明示或暗示的保證。

本文檔中所有內容,包括但不限於圖片、架構設計、頁面佈局、文字描述,均由飛騰和/或其關聯公司依法擁有其知識產權,包括但不限於商標權、專利權、著作權等。非經飛騰和/或其關聯公司書面同意,任何人不得擅自使用、修改,複製上述內容。

user avatar helpdesk 頭像 u_16213703 頭像 openeuler 頭像 u_16213653 頭像
4 位用戶收藏了這個故事!

發佈 評論

Some HTML is okay.