(超级完整)网络功能和性能测试工具汇总

3,591 阅读6分钟

公司自研的工具就不推荐了

常用传输层测试工具

iperf/iperf3(开源)

官网地址:iperf.fr/

下载地址:iperf.fr/iperf-downl…

文件下载:📎iperf-3.1.3-win64.zip

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(开源)

项目地址:github.com/HewlettPack…

服务端

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/

项目地址:github.com/processone/…

tsung 是erlang开发的一款开源的多协议分布式负载并发测试工具,可用作HTTP、WebDAV、SOAP、PostgreSQL、MySQL、LDAP 和 Jabber/XMPP的服务器压力测试。tsung可分布在多个客户机,并能够模拟成千上万的虚拟用户数并发。

测试命令

## 模拟简单的HTTP请求
tsung -f  http_simple.xml start
## 进入日志目录,生成图表
tsung_stats.pl

测试结果

Locust(开源)

官网地址:locust.io/

项目地址:github.com/locustio/lo…

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(开源)

包回放工具

官网地址:tcpreplay.appneta.com/

这两个开源的工具,都可以实现将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 的应用程序。