基于飞腾腾云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和其他飞腾商标均为飞腾信息技术有限公司的商标。

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

注意

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

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

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

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

场外期权一级交易商都有哪些?和二级交易商有什么区别?

今天带你了解场外期权一级交易商都有哪些?和二级交易商有什么区别?目前,个人投资者无法直接进行场外个股期权投资,而是需要通过专业机构进行询价交易下单。 场外期权业务一级交易商分别为,广发证券、国泰君安、华泰证…

Java学习笔记(一)Java内容介绍、程序举例、DOS命令、Java跨平台特性的本质、课后练习

Hi i,m JinXiang ⭐ 前言 ⭐ 本篇文章主要介绍Java内容介绍、程序举例、DOS命令、Java跨平台特性的本质还有几道课后练习详细介绍以及部分理论知识 🍉欢迎点赞 👍 收藏 ⭐留言评论 📝私信必回哟😁 🍉博主收将持续更新学习记录获,友友们有任何问题可以在评论区留言 …

中小学校共用电脑通过安当SLA产品配置实现开机控制

中小学校公用电脑实现电脑开机控制的必要性主要体现在以下几个方面: 1. 增强安全性: 公用电脑由于使用频繁,容易被未经授权的用户访问,可能存在数据泄露或恶意软件植入的风险。通过实现电脑开机控制,学校可以确保只有…

【jdk】jdk11 jdk17 jdk21的新特性

前言:按照博主的个人理解,一般来说 除了jdk8时代 说jdk8的新特性是特指jdk8这一个版本的特性,之后例如jdk11 jdk17新特性 都是泛特性 什么意思呢? 比如jdk11新特性,一般是指jdk9——jdk11 这一个泛版本的所有新特性&am…

加速度传感器采集时无效数据的产生及消除

1.现象 这是振动传感器的原始采样信号,它有一个明显的上升沿,这个上升沿,看时间轴标尺,大概持续了至少50ms,它是从哪里来的呢? 加速度传感器一般是由恒流源驱动的。而恒流源的原始电源输入是个经由电源模…

RabbitMQ使用交换机进行消息转发

使用交换机进行转发到队列 第一步:创建队列 第二步:创建交换机 第三步:交换机绑定队列 第四步:修改消息生产者发送业务 第五步:修改消息接收者业务代码 RabbitListener(queues "fanout.queue1")public vo…

linux服务器没外网源码安装glibc-2-28

linux服务器没外网源码安装glibc-2-28 所需源码包,其中gcc文件夹不需要,其它tar包都需要 tar.gz的解压方式 #tar -zxvf 包名 tar.xz的解压方式 #tar -xf 包名 全部解压完成后 安装顺序请按照下方顺序操作(wget后面是下载地址&#xff…

码云建仓库

1.新建仓库 码云地址 打开 码云地址 ,点击“”,新建仓库,添加仓库内容 ,创建。 小提示:如果本地已有项目,就不要选初始化,设置模板,容易冲突。 2. 进入当前仓库页 小提示&#x…

决定马萨诸塞州版图的关键历史事件

决定马萨诸塞州版图的关键历史事件: 1. 早期探索与*民定居:17世纪初,英国清教徒为寻求宗教自由,乘坐“五月花号”到达新大陆,并于1620年在现在的普利茅斯建立了第一个永久性英国*民地。随后,更多的英国*民…

微软NVIDIA讲师直播讲解:探索LLM大模型的小型化 —— 小模型在NVIDIA Jetson 与 NIM 平台的最佳实践

Webinar主题:探索LLM大模型的小型化 —— 小模型在NVIDIA Jetson 与 NIM 平台的最佳实践 时间:6月25号 晚8点-9点 时长:1h 活动形式:线上 点击链接报名本次在线研讨会:https://www.nvidia.cn/webinars/sessions/?s…

开发大模型应用,到底使用RAG还是微调?我们应该从哪些方面考虑?

现在基于大模型开发应用时,相信很多人都有这种疑问,到底对大模型进行微调还是外接RAG呢?因为两者在一定层面上有很多相似的地方,下面让我给大家从各个层面进行分析,结合具体的业务场景,看哪种方式更适合你的…

一款轻量级的WPF UI库---Adonis UI

Adonis UI适用于 WPF 应用程序的轻型 UI 工具包,提供经典但增强的 Windows 视觉对象 组件内容 几乎所有 WPF 控件的模板的默认样式为方便起见,可根据需要使用两种配色方案(浅色和深色),也可用于自定义样式支持在运行时更改配色方案支持其他自定义配色方案提供水印等功能的…

硬盘监控和分析工具:Smartctl

文章目录 1. 概述2. 安装3. 使用4. smartctl属性信息介绍 1. 概述 Smartctl(S.M.A.R.T 自监控,分析和报告技术)是类Unix系统下实施SMART任务命令行套件或工具,它用于打印SMART自检和错误日志,启用并禁用SMRAT自动检测…

又一盛举,沃飞取得关键技术突破后,助力成都低空载人交通航线运行实践!

6月20日上午9点30分,随着塔台发出指令,一架载人直升飞机(阿古斯塔AW109型号)从洛带通用机场起飞,经停中国欧洲中心、青城山,最后稳稳落地回到洛带通用机场。当天下午,这架飞机再次转动旋翼&…

IDEA2024关闭自动AI代码补全功能

文章目录 一、背景二、教程四、写在后面 一、背景 在本人前段时间的一次面试算法题中,面试官让我关闭代码提示功能,当时气氛尴尬的可以抠出三室一厅,但是这个功能是2024新版参考文献自带的,本次来分享如何关闭新版代码补全功能。…

Mac(M1芯片)安装多个jdk,Mac卸载jdk

1.jdk下载 oracle官方链接:oracle官方下载链接 2.安装 直接下一步,下一步就行 3.查看是否安装成功 出现下图内容表示安装成功。 4.配置环境变量 open -e .bash_profile 路径建议复制过去 #刷新环境变量 source ~/.bash_profile 5.切换方法 6.jdk…

sql sever 存储过程不能请求https的解决方案

此错误的原因,通常是因为SQL Server默认不允许非加密的HTTP请求。为了解决这个问题,需要配置SQL Server允许非密码的https请求,或者使用密码的http请求。 下面是配置SQL Server允许非加密http请求 UsE [master] ;Go EXEC sp_configure Sh…

如何确保消息不被重复消费

一、重复消费问题出现的原因 导致重复消费的原因可能出现在生产者,也可能出现在 MQ 或 消费者。这里说的重复消费问题是指同一个数据被执行了两次,不单单指 MQ 中一条消息被消费了两次,也可能是 MQ 中存在两条一模一样的消费。 生产者&…

施耐德ATV310变频器参数设置

1、ATV610变频器参数设置请参考下面文章链接: 施耐德ATV610变频器MODBUS通信应用(SMART PLC)-CSDN博客文章浏览阅读131次。提升MODBUS-RTU通信数据刷新速度的常用方法_modbus rtu通讯慢-CSDN博客文章浏览阅读1k次。https://rxxw-control.blog.csdn.net/article/det…

Python为JSON解析和生成功能库之rapidjson使用详解

概要 在现代应用程序开发中,JSON(JavaScript Object Notation)作为一种轻量级的数据交换格式,被广泛应用于Web开发、数据传输和配置文件等场景。Python自带的json模块已经非常强大,但在处理大规模数据时,其性能可能无法满足需求。为了提高JSON处理效率,Python的rapidjs…