Skip to content

Files

Latest commit

7711ff5 · Apr 17, 2023

History

History

doc

Folders and files

NameName
Last commit message
Last commit date

parent directory

..
Feb 16, 2020
Feb 5, 2020
Apr 17, 2023

压力测试

基于pipeline

只是谁便测试玩玩,反正机器便宜。

注意1:连接数和并发数要区分开; 注意2:阿里云的机器默认有连接数限制(5000),可以先创建一台,把该装的软件安装好,tcp参数内核调优后,在备份一个系统镜像在玩; 注意3: 使用的是网关集成的方式进行测试。

//使用PM2托管

//服务端
cd /data/JT808.Gateway
pm2 start "dotnet JT808.Gateway.ServerBenchmark.dll ASPNETCORE_ENVIRONMENT=Production" --max-restarts=1 -n "JT808.Gateway.808" -o "/data/pm2Logs/JT808.Gateway/out.log" -e "/data/pm2Logs/JT808.Gateway/error.log"

//客户端
cd /data/JT808Client
pm2 start "dotnet JT808.Gateway.CleintBenchmark.dll ASPNETCORE_ENVIRONMENT=Production" --max-restarts=1 -n "JT808.Gateway.CleintBenchmark" -o "/data/pm2Logs/JT808.Gateway.CleintBenchmark/out.log" -e "/data/pm2Logs/JT808.Gateway.CleintBenchmark/error.log"

//可选的
修改wwwroot下index.html的webapi接口地址
127.0.0.1:15004/index.html

10K

操作系统 配置 使用
centos7 8c16g JT808服务端
centos7 8c16g JT808客户端

计算网络增强型 sn1ne ecs.sn1ne.2xlarge 8 vCPU 16 GiB Intel Xeon E5-2682v4 / Intel Xeon(Skylake) Platinum 8163 2.5 GHz 2 Gbps 100 万 PPS

客户端参数配置appsettings.json

  "ClientBenchmarkOptions": {
    "IP": "",
    "Port": 808,
    "DeviceCount": 10000,
    "Interval": 1000,
    "DeviceTemplate": 100000 //需要多台机器同时访问,那么可以根据这个避开重复终端号 100000-200000-300000
  }

服务器参数配置appsettings.json

  "JT808Configuration": {
    "TcpPort": 808,
    "UdpPort": 808,
    "MiniNumBufferSize": 102400,
    "SoBacklog": 204800
  }

server_proccess_10k

server_network_10k

client_10k

20K

操作系统 配置 使用
centos7 8c16g JT808服务端
centos7 8c16g JT808客户端

计算网络增强型 sn1ne ecs.sn1ne.2xlarge 8 vCPU 16 GiB Intel Xeon E5-2682v4 / Intel Xeon(Skylake) Platinum 8163 2.5 GHz 2 Gbps 100 万 PPS

客户端参数配置appsettings.json

  "ClientBenchmarkOptions": {
    "IP": "",
    "Port": 808,
    "DeviceCount": 20000,
    "Interval": 1000,
    "DeviceTemplate": 100000 //需要多台机器同时访问,那么可以根据这个避开重复终端号 100000-200000-300000
  }

服务器参数配置appsettings.json

  "JT808Configuration": {
    "TcpPort": 808,
    "UdpPort": 808,
    "MiniNumBufferSize": 102400,
    "SoBacklog": 204800
  }

server_proccess_20k

server_network_20k

client_20k

30K

操作系统 配置 使用
centos7 8c16g JT808服务端
centos7 8c16g JT808客户端

计算网络增强型 sn1ne ecs.sn1ne.2xlarge 8 vCPU 16 GiB Intel Xeon E5-2682v4 / Intel Xeon(Skylake) Platinum 8163 2.5 GHz 2 Gbps 100 万 PPS

客户端参数配置appsettings.json

  "ClientBenchmarkOptions": {
    "IP": "",
    "Port": 808,
    "DeviceCount": 30000,
    "Interval": 1000,
    "DeviceTemplate": 100000 //需要多台机器同时访问,那么可以根据这个避开重复终端号 100000-200000-300000
  }

服务器参数配置appsettings.json

  "JT808Configuration": {
    "TcpPort": 808,
    "UdpPort": 808,
    "MiniNumBufferSize": 102400,
    "SoBacklog": 204800
  }

server_proccess_30k

server_network_30k

client_30k

40K

操作系统 配置 使用
centos7 8c16g JT808服务端
centos7 8c16g JT808客户端
centos7 8c16g JT808客户端

计算网络增强型 sn1ne ecs.sn1ne.2xlarge 8 vCPU 16 GiB Intel Xeon E5-2682v4 / Intel Xeon(Skylake) Platinum 8163 2.5 GHz 2 Gbps 100 万 PPS

客户端1参数配置appsettings.json

  "urls": "http://*:15004;",
  "ClientBenchmarkOptions": {
    "IP": "",
    "Port": 808,
    "DeviceCount": 20000,
    "Interval": 1000,
    "DeviceTemplate": 100000 //需要多台机器同时访问,那么可以根据这个避开重复终端号 100000-200000-300000
  }
  "urls": "http://*:15004;",
  "ClientBenchmarkOptions": {
    "IP": "",
    "Port": 808,
    "DeviceCount": 20000,
    "Interval": 1000,
    "DeviceTemplate": 200000 //需要多台机器同时访问,那么可以根据这个避开重复终端号 100000-200000-300000
  }

一个进程的线程是有限的,所以分两个进程进行测试

服务器参数配置appsettings.json

  "JT808Configuration": {
    "TcpPort": 808,
    "UdpPort": 808,
    "MiniNumBufferSize": 102400,
    "SoBacklog": 204800
  }

server_proccess_40k

server_network_40k

client_40k

60K

操作系统 配置 使用
centos7 8c16g JT808服务端
centos7 8c16g JT808客户端1
centos7 8c16g JT808客户端2

计算网络增强型 sn1ne ecs.sn1ne.2xlarge 8 vCPU 16 GiB Intel Xeon E5-2682v4 / Intel Xeon(Skylake) Platinum 8163 2.5 GHz 2 Gbps 100 万 PPS

客户端1参数配置appsettings.json

  "ClientBenchmarkOptions": {
    "IP": "",
    "Port": 808,
    "DeviceCount": 30000,
    "Interval": 1000,
    "DeviceTemplate": 100000 //需要多台机器同时访问,那么可以根据这个避开重复终端号 100000-200000-300000
  }

客户端2参数配置appsettings.json

  "ClientBenchmarkOptions": {
    "IP": "",
    "Port": 808,
    "DeviceCount": 30000,
    "Interval": 1000,
    "DeviceTemplate": 200000 //需要多台机器同时访问,那么可以根据这个避开重复终端号 100000-200000-300000
  }

服务器参数配置appsettings.json

  "JT808Configuration": {
    "TcpPort": 808,
    "UdpPort": 808,
    "MiniNumBufferSize": 102400,
    "SoBacklog": 204800
  }

server_proccess_60k

server_network_60k

client_60k

100K

操作系统 配置 使用
centos7 16c24g JT808服务端
centos7 8c16g JT808客户端
centos7 8c16g JT808客户端
centos7 8c16g JT808客户端
centos7 8c16g JT808客户端

计算网络增强型 sn1ne ecs.sn1ne.3xlarge 12 vCPU 24 GiB Intel Xeon E5-2682v4 / Intel Xeon(Skylake) Platinum 8163 2.5 GHz 2.5 Gbps 130 万 PPS 计算网络增强型 sn1ne ecs.sn1ne.2xlarge 8 vCPU 16 GiB Intel Xeon E5-2682v4 / Intel Xeon(Skylake) Platinum 8163 2.5 GHz 2 Gbps 100 万 PPS

客户端1的参数配置appsettings.json

  "ClientBenchmarkOptions": {
    "IP": "",
    "Port": 808,
    "DeviceCount": 25000,
    "Interval": 1000,
    "DeviceTemplate": 100000 //需要多台机器同时访问,那么可以根据这个避开重复终端号 100000-200000-300000
  }

客户端2的参数配置appsettings.json

  "ClientBenchmarkOptions": {
    "IP": "",
    "Port": 808,
    "DeviceCount": 25000,
    "Interval": 1000,
    "DeviceTemplate": 200000 //需要多台机器同时访问,那么可以根据这个避开重复终端号 100000-200000-300000
  }

客户端3的参数配置appsettings.json

  "ClientBenchmarkOptions": {
    "IP": "",
    "Port": 808,
    "DeviceCount": 25000,
    "Interval": 1000,
    "DeviceTemplate": 300000 //需要多台机器同时访问,那么可以根据这个避开重复终端号 100000-200000-300000
  }

客户端3的参数配置appsettings.json

  "ClientBenchmarkOptions": {
    "IP": "",
    "Port": 808,
    "DeviceCount": 25000,
    "Interval": 1000,
    "DeviceTemplate": 400000 //需要多台机器同时访问,那么可以根据这个避开重复终端号 100000-200000-300000
  }

服务器参数配置appsettings.json

  "JT808Configuration": {
    "TcpPort": 808,
    "UdpPort": 808,
    "MiniNumBufferSize": 102400,
    "SoBacklog": 204800
  }

server_proccess_100k

server_network_100k

参考Centos7内核参数调优

vi /etc/security/limits.conf

修改如下:
root soft nofile 204800
root hard nofile 204800
* soft nofile 204800
* hard nofile 204800

vi /etc/pam.d/login
添加如下:
session    required     pam_limits.so

vi /etc/sysctl.conf
添加如下:
vm.swappiness = 0
net.ipv4.neigh.default.gc_stale_time = 120
# see details in https://help.aliyun.com/knowledge_detail/39428.html
net.ipv4.conf.all.rp_filter = 0
net.ipv4.conf.default.rp_filter = 0
net.ipv4.conf.default.arp_announce = 2
net.ipv4.conf.lo.arp_announce = 2
net.ipv4.conf.all.arp_announce = 2
# see details in https://help.aliyun.com/knowledge_detail/41334.html
net.ipv4.tcp_synack_retries = 2
net.ipv4.tcp_syn_retries = 1
net.ipv4.tcp_synack_retries = 1
net.ipv4.tcp_keepalive_time = 600
net.ipv4.tcp_keepalive_probes = 3
net.ipv4.tcp_keepalive_intvl =15
net.ipv4.tcp_retries2 = 5
net.ipv4.tcp_fin_timeout = 1
net.ipv4.tcp_max_tw_buckets = 65535
net.ipv4.tcp_tw_recycle = 1
net.ipv4.tcp_tw_reuse = 1
net.ipv4.tcp_max_orphans = 32768
net.ipv4.tcp_syncookies = 1
net.ipv4.tcp_max_syn_backlog = 65535
net.ipv4.tcp_wmem = 8192 131072 16777216
net.ipv4.tcp_rmem = 32768 131072 16777216
net.ipv4.tcp_mem = 94500000 915000000 927000000
net.ipv4.ip_local_port_range = 1024 65000
net.core.somaxconn = 65535
net.core.netdev_max_backlog = 65535
fs.file-max = 265535
net.ipv6.conf.lo.disable_ipv6 = 1
kernel.sysrq = 1
net.ipv6.conf.all.disable_ipv6 = 1
net.ipv6.conf.default.disable_ipv6 = 1

最后重启机器下:
reboot