基于飞腾腾云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 软件要求

软件名对应版本
trafficserver7.1.9
httpd2.4.49
LuaJIT2.1
apr1.7.0
apr-util1.6.1
pcre8.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性能测试结果:

目标项优化前优化后
TPS2719262210

image.png

  上图是web cache性能测试结果柱形图,可以看出经过调优后的web cache性能提升显著。

5 常见问题

  1. apr-util编译报错

  如果报错内容如下图所示:

image.png

  则通过安装expat-devel包可以解决。

推荐阅读

  • 基于飞腾腾云S2500的SPECWeb2009部署指南
  • SPECweb2009调优指南

欢迎广大开发者来飞腾开发者平台获取更多前沿技术文档及资料

如开发者在使用飞腾产品有任何问题可通过在线工单联系我们


版权所有。飞腾信息技术有限公司 2023。保留所有权利。

未经本公司同意,任何单位、公司或个人不得擅自复制,翻译,摘抄本文档内容的部分或全部,不得以任何方式或途径进行传播和宣传。

商标声明

Phytium和其他飞腾商标均为飞腾信息技术有限公司的商标。

本文档提及的其他所有商标或注册商标,由各自的所有人拥有。

注意

本文档的内容视为飞腾的保密信息,您应当严格遵守保密任务;未经飞腾事先书面同意,您不得向任何第三方披露本文档内容或提供给任何第三方使用。

由于产品版本升级或其他原因,本文档内容会不定期进行更新。除非另有约定,本文档仅作为使用指导,飞腾在现有技术的基础上尽最大努力提供相应的介绍及操作指引,但飞腾在此明确声明对本文档内容的准确性、完整性、适用性、可靠性的等不作任何明示或暗示的保证。

本文档中所有内容,包括但不限于图片、架构设计、页面布局、文字描述,均由飞腾和/或其关联公司依法拥有其知识产权,包括但不限于商标权、专利权、著作权等。非经飞腾和/或其关联公司书面同意,任何人不得擅自使用、修改,复制上述内容。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/744832.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

TensorRt(6)yolov3.weight转换、onnx_graphsurgeon和c++ api实现添加NMS

前面博文 【opencv dnn模块 示例(3) 目标检测 object_detection (2) YOLO object detection】 介绍了 使用opencv dnn模块加载yolo weights格式模型的详细说明。 又在博文 【TensorRt(4)yolov3加载测试】 说明了如何将onnx编译为tensorrt格式并使用的方式…

[论文笔记]Mixture-of-Agents Enhances Large Language Model Capabilities

引言 今天带来一篇多智能体的论文笔记,Mixture-of-Agents Enhances Large Language Model Capabilities。 随着LLMs数量的增加,如何利用多个LLMs的集体专业知识是一个令人兴奋的开放方向。为了实现这个目标,作者提出了一种新的方法&#xf…

【Mac】iTerm for mac(终端工具)软件介绍及安装教程

软件介绍 iTerm 是 macOS 上一个非常受欢迎的终端仿真器,提供了比默认的 Terminal 应用更多的功能和定制选项。它是一款开源软件,主要用于命令行界面的操作和开发者工具。 主要特点和功能: 分页和标签: iTerm 允许用户在单个窗…

centOS 7安装gitlab

主要参考: CentOS-7 下 GitLab 安装部署教程_centos7 安装gitlab-CSDN博客 但是由于我本身服务器配置很小(2核2G),所以运行的时候报错: execute[clear the gitlab-rails cache] (gitlab::gitlab-rails line 561) had an error: Mixlib::Sh…

vue3使用v-html实现文本关键词变色

首先看应用场景 这有一段文本内容,是项目的简介,想要实现将文本中的关键词进行变色处理 有如下关键词 实现思路 遍历文本内容,找到关键词,并使用某种方法更改其字体样式。经过搜寻资料决定采用v-html实现,但是v-h…

哈夫曼编码

一.哈夫曼树 哈夫曼树(Huffman Tree)是一种用于数据压缩的二叉树。它基于字符出现的频率构建,使得高频字符使用较短的编码,低频字符使用较长的编码,从而实现数据压缩。哈夫曼树也被称为最优二叉树或哈夫曼编码树。 哈夫…

中医背诵笔记(黄帝内经、伤寒论等)

目录 黄帝内经上古天真论今人和古人之差异(精神内守,病安从来?)男女每个年龄阶段身体状态至人、圣人、贤人 宣明五气篇五脏所藏 与 五脏所主七情与情绪与气的关系 天干地支天干地支与脏腑经络的关系 黄帝内经 上古天真论 今人和…

【模型】5分钟了解决策树是一个什么模型

本站原创文章,转载请说明来自《老饼讲解-机器学习》[www.bbbdata.com(https://www.bbbdata.com/ml) 决策树模型是机器学习中不可不学的模型之一,本文简单直接地快速讲解决策树是什么,如何实现。 一、决策树模型 决策树一般包括ID3决策树&am…

Qt:2.环境搭建

目录 1.搭建需要的三个组件: 2.下载Qt安装包: 3.安装qt: 4.配置环境变量: 1.搭建需要的三个组件: C编译器(gcc,cl.exe等)Qt的SDK:软件开发工具包,Windows…

java复习宝典,jdbc与mysql数据库

一.java 1.面向对象知识 (1)类和对象 类:若干具有相同属性和行为的对象的群体或者抽象,类是创建对象的模板,由属性和行为两部分组成。 类是对象的概括或者抽象,对象是类的实例化。 举例:例如车有很多类型&#xf…

从传统到智能:视频汇聚EasyCVR+AI视频监控如何助力仓储的智能化转型

随着物流行业的快速发展和市场竞争的加剧,仓储管理对于保证货物安全、提高运营效率显得尤为重要。传统的仓储监控方式已难以满足现代仓储管理的需求,因此,仓储视频智能监控解决方案应运而生。方案通过集成先进的视频监控技术、智能分析算法、…

xhs 旋转验证码剖析和协议算法实现

【作者主页】:小鱼神1024 【擅长领域】:JS逆向、小程序逆向、AST还原、验证码突防、Python开发、浏览器插件开发、React前端开发、NestJS后端开发等等 本文章中所有内容仅供学习交流使用,不用于其他任何目的,不提供完整代码&#…

Vue + SpringBoot 实现文件的断点上传、秒传,存储到Minio

一、前端 1. 计算文件的md5值 前端页面使用的elment-plus的el-upload组件。 <el-upload action"#" :multiple"true" :auto-upload"false" :on-change"handleChange" :show-file-list"false"><FileButton content&…

【系统架构设计师】六、信息系统基础知识(定义|分类|企业信息化系统|生命周期|建设原则|开发方法)

目录 一、信息系统的定义 二、信息系统的分类 三、企业使用的信息化系统 四、信息系统的生命周期 五、信息系统建设原则 六、信息系统的开发方法 6.1 结构化方法 6.2 原型法 6.3 构件化开发方法 6.4 面向服务的方法 6.5 面向对象的方法 6.6 敏捷方法 历年真题考情&#x…

Linux基础 - 存储结构与管理硬盘

目录 零. 简介 一. 文件系统 Ubuntu 文件系统结构&#xff1a; 路径: 二. 硬盘管理 零. 简介 Linux 文件系统是一种用于组织和存储文件、目录以及相关数据的架构。 常见的 Linux 文件系统有&#xff1a; Ext4&#xff08;Fourth Extended File System&#xff09;&#…

Java中Stream的特性

Stream新特性 被称之为Stream流&#xff0c;用于操作集合或者数组中的数据 优势&#xff1a;Stream流大量的结合了Lambda的语法风格&#xff0c;代码更简洁&#xff0c;可读性更好 使用步骤 先获取数据源&#xff0c;获取Stream流 Collect…

S_LOVE多端恋爱小站小程序源码 uniapp多端

S_LOVE多端恋爱小站小程序源码&#xff0c;采用uniapp多端开发框架进行开发&#xff0c;目前已适配H5、微信小程序版本。 源码下载&#xff1a;https://download.csdn.net/download/m0_66047725/89421726 更多资源下载&#xff1a;关注我。

【arduino】使用最新版本的软件2.3版本,安装设备驱动,成功上传设备到ESP32中,使用超便宜的主板16元的arduino就可以进行开发

1&#xff0c;下载软件 https://www.arduino.cc/en/software 购买硬件设备超级便宜&#xff1a; https://detail.1688.com/offer/607729642347.html?spma26352.13672862.offerlist.121.7af9638afU2nu2 https://detail.1688.com/offer/574143571194.html?_t1719333276237&…

基于ESP8266串口WIFI模块ESP-01S在AP模式(即发射无线信号( WiFi))下实现STC单片机与手机端网路串口助手相互通信功能

基于ESP8266串口WIFI模块ESP-01S在AP模式(即发射无线信号( WiFi))下实现STC单片机与手机端网路串口助手相互通信功能 ESP8266_01S引脚功能图ESP8266_01S原理图ESP8266_01S尺寸图检验工作1、USB-TTL串口工具(推荐使用搭载CP2102芯片的安信可USB-T1串口)与ESP8266_01S WiFi…

如何给小语种视频生成字幕

目前我们常看的有视频有中、英、日、韩这四种语言&#xff0c;如果我们想给其他的不常用的语言生成字幕怎么办&#xff1f;今天教大家如何给其他语言生成视频字幕文件 打开智游剪辑&#xff08;zyjj.cc&#xff09;搜索字幕生成&#xff0c;选择多语种那个就可以了 然后上传我们…