【寫在前面】飛騰開發者平台是基於飛騰自身強大的技術基礎和開放能力,聚合行業內優秀資源而打造的。該平台覆蓋了操作系統、算法、數據庫、安全、平台工具、虛擬化、存儲、網絡、固件等多個前沿技術領域,包含了應用使能套件、軟件倉庫、軟件支持、軟件適配認證四大板塊,旨在共享尖端技術,為開發者提供一個涵蓋多領域的開發平台和工具套件。點擊這裏開始你的技術升級之旅吧
本文分享至飛騰開發者平台《基於飛騰騰雲S2500的ATS部署及調優方法(反向代理篇)》
1 軟件介紹
ATS全稱為Apache Traffic Server,是一種高性能、模塊化的HTTP緩存代理服務器。HTTP代理通常分為正向代理、反向代理和透明代理。本文主要介紹HTTP反向代理,反向代理是指以代理服務器來接受Internet上的連接請求,然後將請求轉發給內部網絡上的服務器,並將從內網服務器上得到的結果返回給Internet上請求連接的客户端。如下圖,Traffic
Server充當代理服務器,Origin Server是內網中的源服務器,整個內網對外表現為一個服務器。
(引用自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 |
上圖是web cache性能測試結果柱形圖,可以看出經過調優後的web cache性能提升顯著。
5 常見問題
1. apr-util編譯報錯
如果報錯內容如下圖所示:
則通過安裝expat-devel包可以解決。
推薦閲讀
- SPECweb2009調優指南
- 基於飛騰騰雲S2500的SPECWeb2009部署指南
歡迎廣大開發者來飛騰開發者平台獲取更多前沿技術文檔及資料
如開發者在使用飛騰產品有任何問題可通過在線工單聯繫我們
版權所有。飛騰信息技術有限公司 2023。保留所有權利。
未經本公司同意,任何單位、公司或個人不得擅自複製,翻譯,摘抄本文檔內容的部分或全部,不得以任何方式或途徑進行傳播和宣傳。
商標聲明
Phytium和其他飛騰商標均為飛騰信息技術有限公司的商標。
本文檔提及的其他所有商標或註冊商標,由各自的所有人擁有。
注意
本文檔的內容視為飛騰的保密信息,您應當嚴格遵守保密任務;未經飛騰事先書面同意,您不得向任何第三方披露本文檔內容或提供給任何第三方使用。
由於產品版本升級或其他原因,本文檔內容會不定期進行更新。除非另有約定,本文檔僅作為使用指導,飛騰在現有技術的基礎上盡最大努力提供相應的介紹及操作指引,但飛騰在此明確聲明對本文檔內容的準確性、完整性、適用性、可靠性的等不作任何明示或暗示的保證。
本文檔中所有內容,包括但不限於圖片、架構設計、頁面佈局、文字描述,均由飛騰和/或其關聯公司依法擁有其知識產權,包括但不限於商標權、專利權、著作權等。非經飛騰和/或其關聯公司書面同意,任何人不得擅自使用、修改,複製上述內容。