你不知道的 HTTPS 压测

简介:随着互联网安全规范的普及,使用 HTTPS 技术进行通信加密,实现网站和 APP 的可信访问,已经成为公认的安全标准。本文将介绍针对 HTTPS 协议做压力测试的关注点,以及使用 PTS 做 HTTPS 压测的技术优势和最佳实践。

作者:拂衣

引言

随着互联网安全规范的普及,使用 HTTPS 技术进行通信加密,实现网站和 APP 的可信访问,已经成为公认的安全标准。本文将介绍针对 HTTPS 协议做压力测试的关注点,以及使用 PTS 做 HTTPS 压测的技术优势和最佳实践。

常见的网站或者 APP 中需要做压测的 3 种场景:

  • 新开发的系统或功能上线前需要了解其性能水位情况。
  • 对系统进行技术调优、系统扩容前后通过压测进行性能比对。
  • 参加平台活动前对系统进行性能评估。

什么是 HTTPS

HTTPS 的英文全称是:Hyper Text Transfer Protocol over Secure Socket Layer,它是以安全为目标的 HTTP 通道。从全称上可以看出,它其实不是一种新的应用层协议,只是 HTTP 协议将通信接口用 SSL 替代了 TCP。HTTP 协议中,应用层 HTTP 直接与传输层 TCP 通信,在 HTTPS 协议中 ,应用层 HTTP 与 SSL 通信,SSL 再与传输层的 TCP 通信,具体如图:

HTTPS 通过 SSL 层的加密,可以防止网站被篡改和劫持。下面我们简单看下 HTTPS 是如何进行加密解密的:

首先客户端和服务端会协商加密算法和协议版本。协商结束后,服务端发送公钥给客户端,客户端拿到公钥后,生成一个随机密码串(Pre-master secret),并通过公钥加密返回给服务端。服务端使用私钥解密密文后,得到此随机密码串(Pre-master secret),之后通过协商的随机数和加密算法,生成对称加密密钥。至此,双方得到了同一个密钥,后续使用此密钥实现对称加密解密。

我们知道对称加密性能更好,但只要持有密钥,就能将劫持的密文解密,无法解决被劫持的问题。非对称加密相对更安全,但同时加密解密性能开销大。可以看出 HTTPS 在握手阶段使用了非对称加密,在后续的通信中使用了对称加密,既保证了安全性,又最大限度保证了性能。

HTTPS 压测的关注点

SSL 握手策略

HTTPS 在握手阶段有加密解密的过程,所以相比 HTTP 更消耗计算资源。压测引擎为了模拟海量用户执行请求,往往底层会在全局或线程维度,复用 TCP 连接和 SSL 握手信息。这提高了施压机的性能,但对希望每次循环模拟不同客户端行为的场景来说,施压机只模拟了足够的流量压力,并没有模拟足够的 SSL 握手计算压力,可能造成压力模拟不够准确的问题,如下图所示:

因此,在 HTTPS 压测中,需要根据压测场景的具体业务逻辑,指定每次循环是否重置 SSL 握手状态,准确模拟 SSL 握手计算压力。

SSL 协议版本

HTTPS 压测,在客户端(施压机)和服务端进行 SSL 握手的第一步,客户端会告知给服务端自己支持的最高 SSL 协议版本,然后服务端会从自己和客户端支持版本的交集中,取最高的版本作为实际使用的 SSL 版本。

在压测时,需要评估出真实客户端的主流版本,并配置到施压引擎上。避免因 SSL 版本不同,造成 SSL 握手计算压力模拟不准确。

Why PTS—PTS 做 HTTPS 压测的优势

JMeter、Gatling、K6 等开源压测工具对 HTTPS 有不同程度的支持。JMeter[1]支持配置循环是否重置 SSL 握手状态,并且支持配置客户端 SSL 协议版本,但是默认不支持 HTTP2 协议。Gatling[2]默认每个虚拟用户共享 SSL 上下文,不支持控制循环重置 SSL 握手状态。K6[3]目前只支持设置 SSL 协议版本。

PTS 作为云上压测工具,支持如下 HTTPS 相关特性:

  • 支持 HTTP2
    HTTP2 相比较 HTTP1.1 性能大幅提升,且目前主流浏览器均已支持 HTTP2 协议。为了模拟真实客户端,建议使用 HTTP2 协议。
  • 支持设置 SSL 握手策略
    支持配置循环是否重置 SSL 握手状态,可以根据业务场景,选择是否重置。
  • 支持指定 SSL 协议版本

使用 PTS 压测,可以更真实的模拟客户端发起的 HTTPS 压力,使压测结果更可信。

How to—如何用 PTS 做 HTTPS 压测

设置 SSL 握手策略

对于 HTTPS 压测,在串联链路每次循环时,需要选择是否重置 SSL 连接状态。如果选择重置,在串联链路每一次循环执行时,会重新初始化 SSL 状态,这样可以更准确模拟每次循环代表不同用户的压测场景,同时会对施压机带来一定的性能开销。

使用场景

  • 场景一:HTTPS 压测,希望模拟 100 个用户登录,同时保持这 100 个用户不断重复访问系统。此时串联链路每次循环执行,模拟的是同一个虚拟用户的行为。应将此开关置为“否”,然后设置并发数为 100。
  • 场景二:HTTPS 压测,希望模拟 5 分钟内,每个时刻都有 100 个不同用户对系统访问。此时串联链路每次循环执行,模拟的是不同虚拟用户的行为。为了保证压力模拟真实性,应将此开关置为“是”,然后设置并发数为 100。同时因为打开此开关后,施压机有额外的性能开销,建议扩展施压机IP数。

设置 SSL 协议版本

这里列出一些常用浏览器对 SSL 版本的支持情况供您参考:

可以看出,主流浏览器在 2018~2020 年前后都支持了 TLSv1.3。因此,如果您的压测场景模拟的客户端较新,建议您选择 TLSv1.3 作为 SSL 版本;相反,如果您的压测场景需要模拟旧版本的浏览器客户端,建议您选择 TLSv1.2 作为 SSL 版本。

如何录制 HTTPS 流量

各压测工具都提供了基于代理的流量录制工具,方便录制下客户端的流量,并快速构建压测脚本。对于 HTTPS 协议的录制,除了配置代理,还需要信任证书,操作比较复杂。

PTS 提供了免配置证书的录制方案:浏览器插件,支持快速录制 HTTPS 流量,解密并转换为 PTS 压测场景,同时支持导出为 JMeter 脚本,欢迎下载[4]使用,详细操作可参考文档[5]

同时针对移动流量录制,PTS 提供了云真机和本地设备 2 种方案。其中云真机已预置 PTS 代理配置,支持在浏览器操作手机,录制流量,无需配置代理和证书,详细操作可参考文档[6]

总结

综上,本文主要阐述了:

  • 什么是 HTTPS
  • HTTPS 压测中的注意点
  • 如何用 PTS 做 HTTPS 压测

更多交流,欢迎进钉钉群沟通,PTS 用户交流群号:11774967

同时,PTS 全新售卖方式来袭,基础版价格直降 50%!百万并发价格只需 6200!更有新用户 0.99 体验版、VPC 压测专属版,欢迎大家选购!

 

参考文档

[1] JMeter(官方文档):

Apache JMeter - User's Manual: Component Reference

[2] Gatling(官方文档):

Gatling - SSL

[3] K6:

Options

[4] 下载(PTS HTTPS录制器插件):

https://chrome.google.com/webstore/detail/alibaba-cloud-pts%E5%BD%95%E5%88%B6%E5%99%A8/noonnhdncblnaknhoebaglpcihelliff

[5] 文档(PTS 录制器使用文档—Chrome 浏览器场景):

录制Chrome浏览器场景 - 性能测试 PTS - 阿里云

[6] 文档(PTS 录制器使用文档—Android 手机端场景):

录制Android手机端场景 - 性能测试 PTS - 阿里云

[7] PTS HTTPS设置文档:

高级设置 - 性能测试 PTS - 阿里云

原文链接

本文为阿里云原创内容,未经允许不得转载。 

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

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

相关文章

数据湖—Delta Lake

简介:Delta Lake 是 DataBricks 公司开源的、用于构建湖仓架构的存储框架。能够支持 Spark,Flink,Hive,PrestoDB,Trino 等查询/计算引擎。作为一个开放格式的存储层,它在提供了批流一体的同时,为…

2022杭州云栖大会定档11月3日至5日:技术产品发布+超4万平科技展

9月28日消息,记者从云栖大会组委会获悉,2022杭州云栖大会将于11月3日至5日在杭州云栖小镇举办。今年云栖大会以“计算进化未来”为主题,在3天内设置两场主论坛,70多场数字技术、产业和生态分论坛,以及4万平米智能科技全…

阿里云RemoteShuffleService 新功能:AQE 和流控

简介:阿里云EMR 自2020年推出 Remote Shuffle Service(RSS)以来,帮助了诸多客户解决 Spark 作业的性能、稳定性问题,并使得存算分离架构得以实施。为了更方便大家使用和扩展,RSS 在2022年初开源(https://github.com/alibaba/Remot…

如何使用Delta Lake构建批流一体数据仓库

简介:Delta Lake是一个开源存储层,它为数据湖带来了可靠性。Delta Lake提供了ACID事务、可扩展的元数据处理,并统一了流式处理和批处理数据处理。Delta-Lake运行在现有数据湖之上,并且与Apache Spark API完全兼容。希望本篇能让大…

中国峰会|下一代云基础架构,赋能企业云上发展

点击上方入口立即【自由构建 探索无限】一起共赴年度科技盛宴!马上点击“阅读原文”了解更多亚马逊云科技中国峰会让我们共同见证亚马逊的一小步云计算的一大步扫码【立即报名】直通大咖云集的亚马逊云科技中国峰会!

Delta Lake基础介绍(商业版)

简介:介绍 Lakehouse 搜索引擎的设计思想,探讨其如何使用缓存,辅助数据结构,存储格式,动态文件剪枝,以及 vectorized execution 达到优越的处理性能。 作者:李洁杏,Databrick资深软…

云原生数仓如何破解大规模集群的关联查询性能问题?

简介:AnalyticDB for PostgreSQL(以下简称ADB PG)是一款PB级的MPP架构云原生数据仓库。本文从ADB PG架构设计的角度出发,探讨Runtime Filter在ADB PG中的实现方案,并介绍了基于Bloom Filter的ADB PG Dynamic Join Filter功能技术细节。 作者 …

独家对话Python之父:人类大脑才是软件开发效率的天花板

【CSDN 编者按】十五年前,《程序员》杂志曾专访过 Python 之父 Guido van Rossum,一起探讨了 Python 3.0 的较为明显的新特性,即增加了对中文( Unicode )的支持。十五年过去,Python 的版本号只前进了一个数字,但是 Pyt…

淘系用户平台技术团队单元测试建设

简介:单元测试是工程交付前质量保障的第一环,也无疑是软件工程质量保障的重要基石,有效的单元测试能够提前发现90%以上的代码Bug问题,同时也能防止代码的腐化,在工程重构演进时起到至关重要的作用。 作者 | 问元 来源 …

阿里云弹性计算对视觉计算的思考与实践

简介:利用人类已有和将有的技术加之商业手段,实现对人类感官体验进行全方位升级。 4月21日,“2022英伟达数字孪生技术应用论坛”上,阿里云弹性计算产品专家张新涛为大家带来了题为《阿里云弹性计算在XR业务上的应用实践》的主题分…

游戏行业弹性计算最佳实践

简介:本篇主要介绍三大游戏场景:游戏服务、大数据运营、云游戏的架构特点,以及基于这些场景下的阿里云游戏行业计算基础设施选型与部署方案。 文丨寻野,阿里云弹性计算产品解决方案架构师 摘要:游戏一直以来是互联网…

三大特性,多个场景,Serverless 应用引擎 SAE 全面升级

简介:Serverless 应用引擎 SAE 凭借着天然技术优势,已经帮助成千上万家企业实现容器和微服务技术转型。近日,SAE不仅进一步提供了全套微服务能力,更为传统 Job 和 PHP 用户提供了全新的,更高效、更经济且可平滑迁移的解…

代码覆盖率在性能优化上的一种可行应用

简介:JavaScript 是前端应用主要语言,相较于其他平台编程语言,JS资源多数情况下要通过网络进行加载,那么代码的体积直接影响了页面加载执行时间。“无效的代码”的多寡直接影响到了我们的代码质量,所以度量代码的执行覆…

MaxCompute湖仓一体介绍

简介:本篇内容分享了MaxCompute湖仓一体介绍。 分享人:孟硕 阿里云 MaxCompute产品专家 视频链接:数据智能实战营-北京站 专题回顾 正文: 本篇内容将通过两个部分来介绍MaxCompute湖仓一体。 一、什么是 MaxCompute 湖仓一体…

云原生离线实时一体化数仓建设与实践

简介:本篇内容分享了云原生离线实时一体化数仓建设与实践。 分享人:刘一鸣 Hologres 产品经理 视频链接:数据智能实战营-北京站 专题回顾 正文: 本篇内容将通过五个部分来介绍云原生离线实时一体化数仓建设与实践。 一、离线实…

议题征集|Flink Forward Asia 2022 正式启动

在这数据量爆炸性增长的时代,开源软件如雨后春笋般出现在开发者的视野中,数据的价值被重新定义。同时,越来越多的企业开启实时化道路,数据的实时分析与计算需求与日俱增。作为主打流处理的计算引擎 Apache Flink 于 2014 年正式开…

龙蜥正式开源 SysOM:百万级实战经验打造,一站式运维管理平台 | 龙蜥技术

简介:SysOM集监控、告警、诊断、修复、安全能力于一体的操作系统运维平台。 文/系统运维 SIG 如果你被突如其来的 OOPS 和满屏奇怪的函数弄得满头问号?机器内存明明很大,却申请不出来内存?业务周期抖动,ping 命令偶尔…

微软在华商业应用战略全面升级,首次推出面向医疗和生命科学的云行业套件

2022年9月29日,微软宣布进一步升级在华商业应用战略,落地一系列智能商业应用(Biz App)功能的同时,以Dynamics 365和Power Platform为基础,进一步完善商业应用战略与价值定位,助力更多客户和合作…

使用Databricks进行零售业需求预测的应用实践

简介:本文从零售业需求预测痛点、商店商品模型预测的实践演示,介绍Databricks如何助力零售商进行需求、库存预测,实现成本把控和营收增长。 作者:李锦桂 阿里云开源大数据平台开发工程师 本文从零售业需求预测痛点、商店商品模型…

龙蜥开源内核追踪利器 Surftrace:协议包解析效率提升 10 倍 | 龙蜥技术

简介:如何将网络报文与内核协议栈清晰关联起来精准追踪到关注的报文行进路径呢? 文/系统运维 SIG Surftrace 是由系统运维 SIG 推出的一个 ftrace 封装器和开发编译平台,让用户既能基于 libbpf 快速构建工程进行开发,也能作为 ft…