公司自研的工具就不推荐了
常用传输层测试工具
iperf/iperf3(开源)
官网地址:iperf.fr/
iperf和iperf3工具以client/server方式工作,可以测试网络吞吐、丢包、延时
服务端
iperf3 -s -p 11111
客户端
(1)测试UDP:持续发送1m吞吐的UDP数据20s,可以设置不同的流量、包长,并且测试结果可以观察到延时丢包
iperf3.exe -c 154.16.167.57 -b 1m -t 10 -p 11111 -l 512 -u
## -l:用来设置包长
(2)测试TCP:持续发送吞吐的TCP数据10s,可以用来测试网络吞吐
iperf的Windwows GUI版本
文件下载:📎jperf-2.0.2.zip
netperf(开源)
服务端
netserver -p 22266 -D -d
客户端
测试UDP,跑数据10s
netperf -H 154.16.167.57 -l 10 -t UDP_STREAM -p 22266
测试TCP,跑数据10s
netperf -H 154.16.167.57 -l 10 -p 22266
Spirent TestCenter(商业)
官网地址:www.spirent.cn/products/te…
TestCenter支持网络2层到7层的测试
目前我们使用较多的是4层和7层的性能压力
- 4层主要覆盖不同包长、不同吞吐、不同会话的性能指标
- 7层主要覆盖不同应用、不同吞吐、不同会话的性能指标
TestCenter主要我们用的有购买的实体测试仪、也有虚拟版本,虚拟版本可以满足测试10G一下的指标测试
IXIA(商业)
官网地址:www.keysight.com/cn/zh/produ…
IXIA跟思博伦有点类似,在测试模型和测试场景上也比较类似
我们主要使用的是:BreakingPoint,也是支持测试仪,支持虚拟化
- 4层主要是跑背压
- 7层主要是测试新建和并发
BreakingPoint虚拟化的支持很好,可以实现大量的分布式部署,用来跑背景压力特别方便
msend/mreceive
测试组播数据
mreceive作为组播数据的接收端,msend作为组播数据的发送端
broadcast-client/broadcast-server
测试广播数据
broadcast-server作为组播数据的接收端,broadcast-client作为组播数据的发送端
服务端
客户端
其他工具
hping3(开源)
TCP/IP数据包组装/分析工具
sendip(开源)
模拟各种协议发包测试工具(ipv4/ipv6/icmp/tcp/udp/bgp/rip/ntp)
pktgen(开源)
Linux 内核自带的高性能网络测试工具 pktgen。pktgen 支持丰富的自定义选项,方便你根据实际需要构造所需网络包,从而更准确地测试出目标服务器的性能。
Flowgrind(开源):
Flowgrind 是一个类似 iperf 和 netperf 的工具,它可以测量TCP和其它协议的吞吐量和其他指标。它具有一些独特的特点:一个分布式体系结构,先进的流量调度,Linux内核的TCP统计,Anderson-Darling 统计检验,控制和测试之间的分通道航速率限制流动等。
常用应用层测试工具
Spirent TestCenter(商业)
TestCenter支持7层性能压力测试
IXIA(商业)
IXIA BreakingPoint支持7层性能压力测试
curl-loader(开源)
官网地址:curl-loader.sourceforge.net/
curl-loader(也被称为“omes-NIK”和“davilka”)是一个开源的C语言编写的工具,模拟应用负载和成千上万的几十万人的HTTP / HTTPS和FTP/ FTPS的客户端应用程序的行为,每个有其自己的源IP地址。目标是提供Spirent Avalanche和Ixia IxLoad的替代品。
ab(开源)
HTTP协议的并发测试工具
官网地址:httpd.apache.org/docs/2.4/pr…
测试命令
ab -n 1000 -c 10 http://10.119.240.13/index.html
测试结果
tsung(开源)
HTTP协议的并发测试工具
官网地址:tsung.erlang-projects.org/
tsung 是erlang开发的一款开源的多协议分布式负载并发测试工具,可用作HTTP、WebDAV、SOAP、PostgreSQL、MySQL、LDAP 和 Jabber/XMPP的服务器压力测试。tsung可分布在多个客户机,并能够模拟成千上万的虚拟用户数并发。
测试命令
## 模拟简单的HTTP请求
tsung -f http_simple.xml start
## 进入日志目录,生成图表
tsung_stats.pl
测试结果
Locust(开源)
官网地址:locust.io/
Locust 是一种易于使用、可编写脚本且可扩展的性能测试工具。 您可以在常规 Python 代码中定义用户的行为,而不是受到 UI 或仅伪装成真实代码的特定领域语言的约束。 这使得 Locust 可以无限扩展并且对开发人员非常友好。
1、首先准备一个测试脚本
# -*- coding=utf-8 -*-
import requests
import os
from locust import HttpUser,task,TaskSet,HttpLocust,between
from gevent._semaphore import Semaphore
all_locusts_spawned = Semaphore()
all_locusts_spawned.acquire()
class WebTest(TaskSet):
@task(1)
def getallcommand(self):
url = '/api1'
with self.client.get(url, catch_response=True) as response:
response.success()
@task(2)
def getdate(self):
url = '/api2'
with self.client.get(url, catch_response=True) as response:
response.success()
class WebUser(HttpUser):
# 定义固定的 task_set 指定前面的任务类名称
tasks = [WebTest]
min_wait = 3000
max_wait = 6000
between(100,200)
2、启动locust服务
启动master,master可以接入多个worker实现分布式并发测试
locust -f WebTest.py --master -P 11111
启动worker
locust -f WebTest.py --worker
3、通过Web查看测试过程
其它工具
tcpreplay和tomahawk(开源)
包回放工具
这两个开源的工具,都可以实现将tcpdump抓下来的数据包进行回放操作
httpsbench(开源)
https性能基准测试工具,有点像siege
ftpbench(开源)
一个Python库,能够实现ftp高性能基准测试
gobench(开源)
HTTP/HTTPS负载测试和基准测试工具
snmploader(开源)
snmp性能测试工具
dhcp-loader(开源)
dhcp性能测试工具
siege(开源)
siege是一款开源的压力测试工具,可以根据配置对一个WEB站点进行多用户的并发访问,记录每个用户所有请求过程的相应时间,并在一定数量的并发访问下重复进行。
下载地址:download.joedog.org/siege/
siege -c 10 -r 100 -u http://10.119.240.13
Sniper(开源)
Sniper 是一个用 Golang 编写的强大且高性能的 http 负载测试器。 基于goroutine的优势,实现高并发、低内存、丰富的图形显示。支持Linux、Windows、FreeBSD各种平台。
sniper -c 10 -n 100 http://10.119.240.13
Apache JMeter(开源)
Apache JMeter是一个Apache项目,可用作负载测试工具,以分析和测量各种服务的性能,重点是Web应用程序。JMeter可用作JDBC数据库连接,FTP,LDAP,Web服务,JMS,HTTP,通用TCP连接和OS本机进程的单元测试工具。
wrk(开源)
wrk 是一种现代 HTTP 基准测试工具,能够在单个多核 CPU 上运行时产生大量负载。它结合了多线程设计和可扩展的事件通知系统,例如 epoll 和 kqueue。
LoadRunner(商业)
LoadRunner可以使用应用程序软件同时模拟成千上万的用户,记录并随后分析应用程序关键组件的性能。通过产生应用组件之间的消息或通过模拟与用户界面交互,例如按键或鼠标移动LoadRunner的模拟用户活动。
TCPBurn(开源)
TCPBurn 是一个专注于并发的重放工具。这个强大的工具可以强调所有可以重播的基于 TCP 的应用程序。