您好,欢迎来到福建体彩网-首页!

产品展示

哪款网站压力测试工具值得推荐?

发布时间:2020-12-30 00:38

  推荐下网易云社区中我厂廖跃华老师介绍TcpCopy的一篇文章,以下是详情。

  百度TcpCopy,得到的结果是:TCPCopy是一种请求复制(所有基于tcp的packets)工具,可以把在线流量导入到测试系统中去。曾经应用于网易的广告投放系统,urs系统,nginx hmux协议等系统,避免了上线带来的很多问题。现在此工具已经广泛应用于各大互联网公司。近期接触到的项目就是关于线上引流的,因此普及了一下tcpcopy的架构。

  TcpCopy顾名思义,就是一个可以将tcp流量复制的工具(其实也可以复制UDP)。有了这样一个工具,我们就可以真实的复制线上流量,然后将这些流量复制到我们的测试服务器上。这样就可以很容易模拟线上真实用户的访问,做一些功能上的,性能上的测试。而且经过实际测试发现TCPCopy对线上机器的资源消耗也是极低的。而请求复制,一般分为两类:

  传统的做法一般从应用层面进行复制,比如基于服务器的请求复制,这种复制的好处就是实现起来相对简单,但也存在着若干缺点:

  1)请求复制从应用层出发,穿透整个协议栈,这样就容易挤占应用的资源,比如宝贵的连接资源2)测试跟实际应用耦合在一起,容易导致对在线系统的影响,比如有些基于服务器的复制,会导致用户请求的处理时间取决于最慢的请求处理时间(max(真正的请求处理时间,被复制的请求请求处理时间))3)很难支撑压力大的请求复制(据若干用户反映,这种类型的请求复制,曾经严重影响在线)很难控制网络延迟

  基于底层数据包的请求复制,可以做到无需穿透整个协议栈,路程最短的,可以从数据链路层抓请求包,从数据链路层发包,路程一般的,可以在IP层抓请求包,从IP层发出去,不管怎么走,只要不走TCP,对在线的影响就会小得多。 因此从数据包的角度去做基于server的请求复制,方向是对的,而且潜力非常巨大,很可惜,tcpreplay的作者做了一点这方面的探索(flowreplay),就放弃了。

  随之而来的就是TcpCopy是现在应用最为广泛的一种方式,它的 架构已历经三代,基本原理都一样,本质是利用在线数据包信息,模拟tcp客户端协议栈,欺骗测试服务器的上层应用服务。由于tcp交互是相互的,一般情况下需要知道测试服务器的响应数据包信息,才能利用在线请求数据包,构造出适合测试服务器的请求数据包,因此只要基于数据包的方式,无论怎么实现(除非是tcp协议改的面目全非),都需要返回响应包的相关信息。下面就讲讲TcpCopy架构的三代演变:

  从上图可以看出,tcpcopy是从数据链路层(pcap接口)抓请求数据包,发包是从IP层发出去,测试服务器的TCP协议栈没有类似ip queue或者nfqueue的干扰,响应包会直接返回给在线机器(通过设置路由),tcpcopy可以在数据链路层捕获到这些响应包,这些响应包会到达IP层,一般最终被丢弃掉(除非是客户端IP地址就是这台在线机器的IP地址,会通过IP层,但会被TCP reset掉)。这个是TcpCopy的鼻祖 王波同学在 2009年设计并代码实现,仅仅300多行代码就支撑了网易广告投放系统的最初开发,并且上线零失误,解决上线前数百个问题,当然这个最简单的版本应用范围非常有限。 这种架构一般只能工作在同一网段,而且对于外网应用,一般只能复制单台在线流量给测试服务器,无法对网易广告投放系统进行深度问题发现和潜能挖掘。

  好处:1)简单,粗暴2)适合冒烟测试3)测试结果比较线)相对而言,会更加影响在线,因为响应包信息全部回给在线机器了(当然这种还是比应用层面的请求复制,影响更小)2)同一网段限制3)对于外网应用,无法充分利用或者很难充分利用多台在线流量,从而无法为压力测试提供技术支持4)内网应用严重受限制,因请求的客户端IP地址不能是被复制的在线机器的IP地址

  我们先从响应包的截获来分析,理论上,可以在测试服务器的IP层或者数据链路层进行截获响应包,我们具体分析如下:

  2)在测试服务器的IP抓响应包,正好有netlink技术来解决上面的问题,netlink是一种用户态进程与内核进行交互的技术,具体地我们可以利用内核模块ip queue(内核3.5以下版本)或者nfqueue(内核3.5或者以上版本)来达到捕获响应包的目的。我们采用了第二种方式,也即上图中的IP层来截获响应包,当响应包传递给intercept后,我们就能copy到响应包信息的必要信息(一般为TCP/IP头部信息),传递给tcpcopy,我们还可以通过verdict告诉内核,该如何处理这些响应包,如果没有设置白名单的话,就会在IP层丢弃掉这些响应包,这时候你是无法利用tcpudmp来抓到这些响应包的(tcpdump工作在数据链路层)。这种设计的好处就是可以支持复制多台在线流量到一台测试服务器中去,我们在intercept保留路由信息,知道响应包的相关信息该如何返回给哪一个tcpcopy实例。然而这种架构,intercept会不同程度地占用测试服务器的资源,而且ip queue或者nfqueue,并不一定能够高效工作,因而给测试,特别是高压测试和短连接压力测试,带来了很烦。这种架构总结如下:好处:1)支持复制多台在线)影响在线机器更小,因为一般只需要返回TCP/IP头部信息

  缺点:1)较第一种更为复杂2)性能极限往往在ip queue或者nfqueue3)intercept扩展性不好,受制于ip queue和nfqueue无法支持多进程进行响应包的捕获操作4)intercept影响测试服务器的最终测试结果,特别是压力大的时候5)无法对测试服务器进行完整测试(没有覆盖到数据链路层的出口)6)运维不方便第三种架构:

  这个架构也是 最新架构,是为了极限测试的目的而设计的,把intercept的工作从测试服务器(test server)中offload出来,放到另外一立的辅助服务器(assistant server,原则上一定要用同网段的一台闲置的服务器来充当辅助服务器)上面进行截获响应包,福建体彩网,而且把原先从IP层捕获响应数据包的工作转移到从数据链路层抓响应包,这些改变大大降低了对测试机器的各种干扰(除了路由设置,其它已经没有影响了),而且大大扩大了捕获响应包的能力。当然这种测试也更加真实。

  具体如下:在运行上层服务的测试服务器test server上面设置路由信息,把待测试应用的需要被捕获的响应数据包信息路由到辅助服务器assistant server 上面,在assistant server上面,我们在数据链路层截获到响应包,从中抽取出有用的信息,再返回给相应的tcpcopy。

  为了高效使用,这种架构推荐使用pcap进行抓包,这样就可以在内核态进行过滤,否则只能在用户态进行包的过滤,而且在intercept端或者tcpcopy端设置filter(通过-F参数,类似tcpdump的filter),达到多个实例来共同完成抓包的工作,这样可扩展性就更强,适合于超级高并发的场合。

  当然这种架构需要的机器资源也更多,而且也变得更加难使用,需要了解tcp知识,route知识和pcap filter知识(类似于tcpdump过滤条件),因此推荐有条件的并且熟悉上述知识的人使用最新的架构。

  好处:1)更加线)无ip queue或者nfqueue的各种限制5)对测试服务器几乎没有任何性能干扰的影响6)在运行服务的测试服务器,运维更加方便7)不会随运行服务的服务器崩溃而崩溃缺点:1)操作难度更大2)需要的机器数量更多3)需要的知识也更多4)assistant server(运行intercept的机器)原则上必须要和测试服务器(test server)在同一个网段目前项目中用到的引流架构就是第三种架构,需要额外的辅助服务器,当然这也可以更加真实的模拟线上的情况。原文地址:初识TcpCopy架构-社区博客-网易云

  腾讯WeTest出品的线上服务器压力测试服务WeTest服务器压力测试 最高可至亿级并发,实时查看性能数据报表,专家级性能优化建议

  对于简单接口测试和评估容量的,只需要输入url和配置下人数的参数,就可以在一两分钟内快速发起压力。

  压测本身是个高要求的工作,很多人还只知皮毛,对压测原理和应该达到什么效果不得而知,因此能力的提升也很重要,可以善用他们的社区,并关注定期举行的公开课培训

  负载/压力测试工具可以让你了解应用程序在负载/压力下的执行情况,它可以暴露其中的问题,并进行改进。因此,负载/压力测试是确保系统运行效率并不可少的部分。小开向你介绍 10 个开源的负载/压力测试工具,包含但不限于网站负载/压力测试工具,欢迎补充。

  1、Apache JMeterJMeter首页、文档和下载 - 压力测试工具 - 开源中国社区)

  JMeter 是 Apache 组织的开放源代码项目,它是功能和性能测试的工具,100% 的用 Java 实现。

  Httperf 是个 web 服务器的性能测试工具,来自惠普公司。Httperf 提供了灵活的生成各种 HTTP 负载来测试服务器的性能,提供可靠、高性能的工具,支持 HTTP/1.1 和 SSL。

  OpenSTA 是一个免费的、开放源代码的 web 性能测试工具,能录制功能非常强大的脚本过程,执行性能测试。例如虚拟多个不同的用户同时登陆被测试网站。

  4、loadUIloadUI首页、文档和下载 - 负载测试工具 - 开源中国社区)

  loadUI 是一个企业级的负载测试工具,测试可分布式运行并可实时修改,与soapUI紧密集成,使用高度图形化接口,使得测试变得很简单而且运行迅速。

  5、GrinderGrinder首页、文档和下载 - 负载测试框架 - 开源中国社区)

  Grinder 是一个负载测试框架,通过 Jython 来编写测试脚本,基于 HTTP 的测试可以由浏览器来记录整个要测试的过程。

  JCrawler 是一个开源的 WEB 应用压力测试工具。通过其名字,你就可以知道这是一个用 Java 写的像网页爬虫一样的工具。只要你给其几个 URL,它就可以开始爬过去了,它用一 种特殊的方式来产生你 WEB 应用的负载。

  Locust 是一个开源负载测试工具。Locust 是非常简单易用,分布式,用户负载测试工具。Locust 主要为网站或者其他系统进行负载测试,能测试出一个系统可以并发处理多少用户。

  8、SiegeSiege首页、文档和下载 - 压力测试和评测工具 - 开源中国社区)

  Siege 是一个压力测试和评测工具,设计用于 WEB 开发这评估应用在压力下的承受能力:可以根据配置对一个 WEB 站点进行多用户的并发访问,记录每个用户所有请求过程的相应时间,并在一定数量的并发访问下重复进行。

  http_load 以并行复用的方式运行,用以测试 web 服务器的吞吐量与负载。但是它不同于大多数压力测试工具,它可以以一个单一的进程运行,一般不会把客户机搞死。可以测试 HTTPS 类的网站请求。

  Webbench 是有名的网站压力测试工具,它是由 Lionbridge 公司开发。Webbech 能测试处在相同硬件上,不同服务的性能以及不同硬件上同一个服务的运行状况。

  文章转载自【开源中国社区】:还在为测试发愁?10 个开源的压力/负载测试工具

  目前国内业内用的较多的还是loadrunner和Jmeter,Loadrunner的话建议买《精通软件性能测试与LoadRunner实战》,里面介绍的很详细,毕竟性能测试不是说会用工具就可以了,工具其实很简单,有一点编程基础的话一星期就能掌握了。如果只是web端性能测试的话建议学习Jmeter,这样的话后续学习移动端平台的Appium就很方便了

  kylinTOP测试与监控平台提供的性能测试工具是目前业界最先进的性能测试工具。官网:

  Tsung的设计目的是模拟真实用户测试基于IP的服务器程序的伸缩性和性能,可以分步在多个客户机,并能够模拟成千上万的虚拟用户数并发。

  (4)服务器监控(CPU,内存,网络流量),支持SNMP、Rrlang、MUnin方式,方便找出瓶颈;

  WebDAV(RFC 4918)插件是HTTP插件的一个超集。它增加了以下特点(支持版本扩展至WebDAV(RFC 3253)):

  目前仅支持RFC 6455。作为服务器的一种,类似TCP和UDP等传输协议,可以发送任一应用特定的协议数据。可以找到作为examples/ websocket.xml会话类型的例子。

  pgsql 模块(PostgreSQL 插件) ︰ 可用在的信息源。该模块包含源码和Tsung二进制文件,已经通过EPL许可。

  mysql 模块(mysql 插件) ︰ 可用在的信息源。改进后的模块包含源码和Tsung二进制文件,已经通过BSD 许可。

  eldap 模块 (LDAP 插件) ︰ 可用在的信息源。该模块包含源码和Tsung二进制文件,已经通过 GPL 许可。

  mochiweb libs(解析XPath,可以选择用于 HTTP 插件中的动态变量)︰可用在的信息源。该模块包含源码和Tsung二进制文件,已经通过 MIT 许可。

  对于分布式测试,您需要 SSH 访问远程机器没有密码 (使用 RSA 或 DSA 密钥没有密码或 ssh 代理)。另外还支持rsh。

  该指令将打印当前创建的测试的日志目录,直到测试结束。默认情况下嵌入式的 web 服务器将控制器节点上启动并将监听 8091 端口 (这可以使用-n 选项被禁用)。

  (4)测试和调整方案来获得一个好的负载进程。这高度依赖于应用程序和目标服务器的大小。计算方案的正常服务期限和用户与相对期限之间的使用时间间隔来估算为每个给定的相位的并发用户数;

  (5)首次启动应用程序参数设置基准 ︰ Tsung开始 (运行Tsung查看更多选项);

  (6)等待测试结束或用手动停止Tsung (也可以在测试期间生成报告 (请参阅统计和报表) ︰ 每隔 10 秒更新统计信息)。当前活动的摘要,使用Tsung状态。

  (7)分析结果、 调整参数,然后测试下一个基准。2.WebDAV与HTTP 的方法相同︰ 首先录制一个或多个会话 ︰ tsung-recorder -p webdav开始。3.代理服务器的基准

  默认情况下,HTTP 插件用于测试 HTTP 服务器的基准,但也可以用于测试 HTTP 代理服务器的基准。要做到这一点,必须在选项部分中添加 ︰

  可录制的LDAP插件尚未实现,需要自己定义编写,详细信息可以参阅6.6. Sessions。

  可录制的LDAP插件尚未实现,需要自己定义编写,详细信息可以参阅6.6. Sessions。

  无法为Jabber进行录制,需要手动编写您的会话。Jabber/XMPP 中提供的示例。

  由于 Jabber 插件没有解析 XML (从历史上看,它是出于性能原因),需要一种办法确认请求完成。利用ack 属性有3种可能性 ︰

  ack =local从服务器收到数据包,就认为请求被完成。因此如果你不需要从服务器响应请求来使用本地ack,它将等待永远 (或直到超时)。

  ack =no_ack请求一旦被发送即视为已经完成 (不等待传入的数据)。

  ack =global同步用户。其主要用途是等待所有用户在发送邮件之前的连接。要做到这一点,将设置global ack 请求 (可以是第一次出现msg):

  可以向脱机或联机用户发送消息。用户发出存在︰初始信息(此消息之前,用户状态是已连接的)则认为该用户在线 。

  从在线用户列表中删除客户端,并将它们移动到已连接用户列表;发送一个类型 =unavailable的存在更新的广播。

  警告 ︰ 这是 1.2.0中新增的,在早期版本中,只有 2 种状态可用 ︰ 在线和离线;只要用户已连接即认为是在线的。

  下面是可能的认证方法的配置示例。注 ︰ 这里使用的正则表达式只是作为例子 — — 它们是否需要改变取决于具体的服务器的构成信息 (请参阅 Websocket 选项的密码设置6.5. Setting options)。

  privacy:get_names 获取所有名称列表,存储服务器对给定用户的保密列表;

  privacy:set_active为活动设置预定义的名称列表。列表名称确定从 JID,例如如果用户 JID 是,那么该列表名称是_list。应该妥善处理服务器数据库,以确保存在这样一个列表。

  创建一个会话后,可以将它插入主配置文件中,手动编辑该文件,或通过实体声明,例如︰

  1.2.2 中的新增功能 ︰ 为 HTTP配置记录器时可以使用父代理 (但这不适用于 https)。添加-u 选项来启用父代理服务器,并使用-I serverIP 来设置 IP ,-P 端口号来设置父端口。

  警告:一般情况下 (几个Tsung客户端使用),生成的文件将不进行排序,所以你可能需要分析后再进行排序。

  重负荷测试 (每秒数万名请求),协议日志记录可能过载的控制器。这种情况,可以改用 protocol_local。日志文件被写入本地的从属机,需要在测试结束后手动合并日志。

  服务器是群集的入口,可以添加多个服务器,默认情况下每个服务器权重为1,每个会话可以按权重选择任一服务器。可以为每个服务器设置权重(权重可以是整数或浮点数)︰

  可以通过几个虚拟 IP 来模拟更多的机器。负载平衡器通过客户端的 IP 分配服务器群集之间的通信流量是非常有用的。1.1.1 中的新增功能 ︰ IP 不再是强制性。如果未指定,将使用默认的 IP。

  在此示例中,第二台机器用于Tsung群集,拥有更高的权重和 2 个cpu。两个Erlang 虚拟机将用于占用CPU的数目。

  注意:即使 Erlang VM 现在能够处理几个 Cpu (erlang SMP),评测表明,使用一个虚拟机可以更有效地应对Tsung客户端,每个 CPU (SMP 禁用)。只有控制器节点采用SMP erlang。因此,cpu 数应该等于核心节点的数量。如果你喜欢使用 erlang SMP,添加-s 选项来启动Tsung (和不在配置文件中设置 cpu)。

  默认情况下,负载在所有 CPU (默认情况下一个客户端对应一个 CPU) 上是均匀的分布。权重值 (整数) 可以用于考虑到客户端机器的速度。例如,如果一个客户端权重为 1 、其他客户端的权值为 2,第二次启动的用户数将是第一次的两倍(所占比例为1/3 和 2/3)。在前面的示例中的第二个客户端有2个CPU、权重为3,则每个CPU的权重为1.5。

  Maxusers 参数用于避开由单一进程开启嵌套最大数量的限制 (默认情况下1024上有很多OS ) 和缺乏选择的系统调用的可伸缩性。高于限制的用户数目时,将启动一个新的 erlang 虚拟机来处理新的用户。Maxusers 的默认值是 800。启用内核投票,用于 maxusers (例如 30000) 并且不影响性能的一个非常大的值 (但是别忘了OS的上限,ulimit-n,请参阅为什么没有 error_connect_emfile 错误?)。

  注意:是否您使用Tsung主从式,主机的方法分发给从机。如果会话包含数个请求,从机将按顺序执行每个这些请求。

  Tsung能够为客户端提供一个批处理/作业调度器的节点列表。它目前处理 PBS/力矩,LSF 和OAR。设置 type 属性为batch即可实现此功能,例如 ︰

  浏览节点上的IP 别名来获得批调度器,使用 scan_intf 如下 ︰

  Tsung能够通过远程代理程序用几个后端监控远程服务器进行通信。这在 monitoring部分中进行配置。现有的统计数据是 ︰ CPU 活动、 平均负载和内存使用情况。

  通过Tsung启动远程代理。使用 erlang 通信来检索统计信息的服务器的活动。例如,下面是监测定义基于 Erlang 代理商,为6台计算机的群集 ︰

  注意:受监控的计算机要能够联网,必须允许 erlang 通信 (没有任何防火墙更好)。SSH (或 rsh) 需要配置为允许无密码连接上。否则可能无法正常工作,必须使用相同版本的 OTP !

  如果 SNMP 监控是首选,那么关键字 snmp 可以取代 erlang 关键字。他们可以混合使用。1.2.2版后,可以自定义 SNMP 版本、 群落和端口号。使用管理信息基础 (MIB) 中网 snmp 提供(参见

  1.4.2版后,可以自定义从 SNMP 服务器,使用一个或多个 oid 元素检索的对象标识符 (OID):

  类型可以是样品、 计数器或款项,也可以选择定义 (使用 erlang 语法) 函数应用值 (eval 属性)。

  详细设置,在测试的前10分钟,将以每 2 秒的速度创建一个新的用户,10 分钟之后,将以每一秒的速度创建一个新的用户,在最后的 10 分钟,将每一秒创建10 个用户。所有用户都结束他们的会话时即完成测试。

  还可以使用 arrivalrate 而不是间隔。例如,如果你想每秒创建10 个用户,可以使用︰

  在这种情况下,第一阶段只能创建100 个用户,第二阶段可以创建200 多个用户。

  可以多次执行循环语句来加载出完整的序列 (loop = 2 时,循环将被执行2次,所以完整的负载将执行 3 次) (1.2.2版后此功能可用)。

  生成的 HTTP 请求的负载 / 秒也取决于会话内请求的平均数量 (如果每个会线 个请求和 每秒平均生成10 个新用户,理论平均吞吐量将达到 1000 个请求 / 秒)。

  如果你想要开启一个给定的会线. Sessions) 在给定时间在测试期间,1.3.1版之后:

  在此示例中,我们有两个会议,一个是0的概率 (因此将不会使用在第一阶段),和其他 100%。我们定义 3 个用户开始分别在 3mn 和 5 秒后开始测试 (使用 http 示例会线 分钟后启动下次(使用 foo 会线 版本中的新增功能。

  如果你想要一次开启几个会话,并且会话的名称具有相同的前缀,则可以使用通配符。鉴于前几届会议,此示例将启动两个用户 (一个与美孚会话),一个与 foobar 会线s。

  默认情况下,所有用户已经都完成会话时Tsung才能结束。因此它可以比 arrivalphases 的持续时间更长的时间。如果你想要在给定的时间段 (即使未完成或者一些会话仍在活动) 后停止Tsung,可以在加载时设置有效期属性(1.3.2版中新增的功能) ︰

手机:400-0997266

邮箱:8237825@qq.com

地址:河南省 郑州市 西村镇永安路280号

产品展示
软件压力测
哪款网站压
“压力测试
阀门型号上
福建体彩网
福建体彩网
案例展示
上海环静管
福建体彩网
福建体彩网
二维码
Copyright ©2015-2020 福建体彩网-首页 版权所有 福建体彩网保留一切权力!