部标JT808车辆定位监控平台单服务器13.6万接入压力测试记录(附源码)

之前经常有人问平台能支持多少设备同时在线,由于事情多没时间做。最近刚好有机会做下压力测试。在不间断的连续压测三天,最终结果为13.6万TCP连接,30秒上报频率。

一、测试目的

测试平台同时接入设备数量与并发处理能力。

二、准备环境

一台主服务器用于部署车辆定位平台,是常见的8核16G内存300G硬盘,操作系统为centos 7.9,基础软件mysql8.0、redis3.2、jdk1.8,还有车辆定位平台软件。

三台压力测试服务器,同内网服务器。两台为8核16G,一台为2核4G。操作系统均为centos 7.9。

一台8核16G的服务器模拟6.3万个终端设备。
一台8核16G的服务器模拟5.3万个终端设备。
一台2核4G的服务器模拟2万个终端设备,该服务器由于配置原因模拟2万已是极限。
共模拟13.6万个终端设备,外加2台真实设备。

5.3万的压力服务器还有加压1万的空间,但加压后报异常:java.net.NoRouteToHostException: Cannot assign requested address (Address not available)。

三、编写压力测试程序

压力程序由java编写,用Socket类保持长连接,并收发数据,比较简单两个类。源代码如下:

public class TestApp {public static void main(String[] args) {String ip=args[0];String port=args[1];String maxThread=args[2];String startIndex="0";if(args.length>=4)startIndex=args[3];try {int sindex=Integer.parseInt(startIndex);int eindex=sindex+Integer.parseInt(maxThread);for(int i=sindex;i<eindex;i++) {System.out.println("启动线程"+i);new Thread(new SendJT808Thread(Utils.leftAdd0(String.valueOf(i), 14),ip,Integer.parseInt(port))).start();}} catch (Exception e) {e.printStackTrace();} }}

public class SendJT808Thread implements Runnable {private String tid="";private String ip;private int port;private Socket socket;public SendLhcxThread(String tid,String ip,int port) {this.tid=tid;this.ip=ip;this.port=port;}@Overridepublic void run() {try {System.out.println("连接服务器->"+ip+":"+port);socket=new Socket(ip,port);while(true) {Thread.currentThread().sleep(30*1000);String time=Utils.getTime();String temp="这里生成JT808的0x0200报文";socket.getOutputStream().write(Utils.hexToBytes(temp));int len=socket.getInputStream().available();socket.getInputStream().skip(len);}} catch (Exception e) {e.printStackTrace();}finally {try {if(socket!=null)socket.close();} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();}}}}

四、参数调优

1、测试端放开端口区间,以下是临时设置,没放开只能模拟1万多个终端
sysctl -w net.ipv4.ip_local_port_range=“1024 64000”

2、测试端开启允许最大线程,以下是临时设置,没放开只能模拟3.2万个终端
sysctl kernel.pid_max
sysctl -w kernel.pid_max=65535

3、服务端,放开文件句柄数,目标为10万连接,没放开服务器报错:Too many open files
/etc/security/limits.conf
root soft nofile 200001
root hard nofile 200002

4、车辆定位的JT808网关解析线程设置为16,默认为2

五、测试结果

连续压测几天后接入2个真实设备操作业务,数据上报及指令下发都正常。各项服务器指标如下:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

六、附地址:

演示地址
http://gps.lingx.com/
账号:admin
密码:123456

终端设备接入
IP:47.100.112.218
端口:8808

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

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

相关文章

ubuntu arm qt 读取execl xls表格数据

一&#xff0c;ubuntu linux pc编译读取xls的库 1&#xff0c;安装libxls(读取xls文件 电脑版) 确保你已经安装了基本的编译工具&#xff0c;如gcc和make。如果没有安装&#xff0c;可以使用以下命令安装&#xff1a; sudo apt-update sudo apt-get install build-essentia…

principles and practices of interconnection networks. preface

preface 首先两个介绍章节&#xff0c;然后分为拓扑、路由、流量控制、路由器体系结构和性能五部分 第 1 章开始&#xff0c;描述什么是互连网络、如何使用它们、不同应用的性能要求以及如何选择拓扑结构。路由和流量控制就是为了满足这些要求。为了使这些概念具体化并激发本书…

前端学习之css media查询、自定义字体、过度动画、css变换、动画、渐变、多列、字体图标

media查询 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>media查询</title><!-- media查询&#xff1a;根据设备类型不同&#xff1a;比如说打印机、屏幕不同而产生不一样效果格式&#x…

Kubernetes kafka系列 | Strimzi 快速部署kafka集群 (可外部通信)

一、Strimzi介绍 Strimzi 是一个用于 Apache Kafka 在 Kubernetes 上部署和管理的开源项目。它提供了一组 Kubernetes 自定义资源定义(Custom Resource Definitions,CRDs)、控制器和操作符,使得在 Kubernetes 环境中轻松地部署、管理和操作 Kafka 集群成为可能。Strimzi 项…

STM32 CAN的位时序和波特率

STM32 CAN的位时序和波特率 位时序 STM32的CAN外设位时序中只包含3段&#xff0c;分别是同步段SYNC_SEG、位段BS1及位段BS2&#xff0c;采样点位于BS1及BS2段的交界处。其中SYNC_SEG段固定长度为1Tq&#xff0c;而BS1及BS2段可以在位时序寄存器CAN_BTR设置它们的时间长度&…

阿里云2核4G服务器优惠价格30元、165元和199元1年,轻量和ECS

阿里云2核4G服务器租用优惠价格&#xff0c;轻量2核4G服务器165元一年、u1服务器2核4G5M带宽199元一年、云服务器e实例30元3个月&#xff0c;活动链接 aliyunfuwuqi.com/go/aliyun 活动链接如下图&#xff1a; 阿里云2核4G服务器优惠价格 轻量应用服务器2核2G4M带宽、60GB高效…

基于深度学习YOLOv8+PyQt5的水底海底垃圾生物探测器检测识别系统(源码+数据集+配置说明)

wx供重浩&#xff1a;创享日记 对话框发送&#xff1a;323海底 获取完整源码7000张数据集配置说明文件说明远程操作配置环境跑通程序 效果展示 基于深度学习YOLOv8PyQt5的水底海底垃圾生物探测器检测识别系统设计&#xff08;源码数据集配置文件&#xff09; 各文件说明 程序运…

Docker-Container

Docker ①什么是容器②为什么需要容器③容器的生命周期容器 OOM容器异常退出容器暂停 ④容器命令清单总览docker createdocker rundocker psdocker logsdocker attachdocker execdocker startdocker stopdocker restartdocker killdocker topdocker statsdocker container insp…

taro框架之taro-ui中AtSwipeAction的使用

题记&#xff1a;所需效果&#xff1a;滑动删除 工作进程 官网文档代码 <AtSwipeAction options{[{text: 取消,style: {backgroundColor: #6190E8}},{text: 确认,style: {backgroundColor: #FF4949}} ]}><View classNamenormal>AtSwipeAction 一般使用场景</…

Pycharm小妙招之Anaconda离线配环境

Pycharm小妙招之Anaconda离线配环境———如何给无法联网的电脑配python环境&#xff1f; 1. 预备工作2. 电脑1导出包2.1 环境路径2.2 压缩py38导出至U盘 3. 电脑2导入包4. 验证是否导入成功4.1 conda查看是否导入4.2 pycharm查看能否使用 1. 预备工作 WINDOWS系统电脑1(在线)…

一笔画--PTA

文章目录 题目描述思路AC代码 题目描述 输入样例1 3 2 1 2 2 3 输出样例1 Y输入样例2 4 3 1 2 1 3 1 4 输出样例2 N输入样例3 1 0 输出样例3 Y思路 dfs 、欧拉通路、欧拉回路的判定 前导知识 欧拉通路、欧拉回路、欧拉图 无向图&#xff1a; ①设G是连通无向图&#xff0c;则称…

在Linux中同一个tomcat出现多个进程

第一步&#xff0c;查看服务器所有的启动进程。 命令&#xff1a;top -c 第二步&#xff0c;通过点击“shiftM”&#xff0c;按照内存大小排序&#xff1b;点击“shiftP”&#xff0c;按照CPU大小排序。 在[COMMAND]列找到相同的tomcat进程&#xff0c;可以得到对应的PID。 …

阿里云轻量应用服务器和云服务器ECS有什么区别?

阿里云服务器ECS和轻量应用服务器有什么区别&#xff1f;轻量和ECS优缺点对比&#xff0c;云服务器ECS是明星级云产品&#xff0c;适合企业专业级的使用场景&#xff0c;轻量应用服务器是在ECS的基础上推出的轻量级云服务器&#xff0c;适合个人开发者单机应用访问量不高的网站…

鸿蒙一次开发,多端部署(十二)资源使用

在页面开发过程中&#xff0c;经常需要用到颜色、字体、间距、图片等资源&#xff0c;在不同的设备或配置中&#xff0c;这些资源的值可能不同。有两种方式处理&#xff1a; 应用资源&#xff1a;借助资源文件能力&#xff0c;开发者在应用中自定义资源&#xff0c;自行管理这些…

【LeetCode: 120. 三角形最小路径和 + 动态规划】

&#x1f680; 算法题 &#x1f680; &#x1f332; 算法刷题专栏 | 面试必备算法 | 面试高频算法 &#x1f340; &#x1f332; 越难的东西,越要努力坚持&#xff0c;因为它具有很高的价值&#xff0c;算法就是这样✨ &#x1f332; 作者简介&#xff1a;硕风和炜&#xff0c;…

Zero-Change Object Transmission for Distributed Big Data Analytics——论文泛读

ATC 2022 Paper 问题 分布式大数据分析在很大程度上依赖于Java和Scala等高级语言的可靠性和多功能性。然而&#xff0c;这些高级语言也为数据传输制造了障碍。要在Java虚拟机&#xff08;JVM&#xff09;之间传输数据&#xff0c;发送方应将对象转换为字节数组&#xff08;序…

nvidia显卡如何安装cuda驱动

目录 查看显卡对应的cuda版本下载与你显卡匹配的CUDA Toolkit 查看显卡对应的cuda版本 按 微软 R 键&#xff0c;输入cmd 然后输入 nvidia-smi &#xff0c;回车显示下面信息&#xff1a; 看到 CUDA Version 为 12.2 下载与你显卡匹配的CUDA Toolkit 打开网页&#xff1a…

iOS UIFont-新增第三方字体

背景 在项目中添加三方字体&#xff0c;是在开发中比较常见的需求&#xff0c;每次新增字体&#xff0c;都会遗忘其中某个步骤&#xff0c;又要去百度一下才能把字体添加使用成功。每次这样有点浪费时间和打击自信&#xff0c;于是便想着&#xff0c;自己好好来理一理新增字体…

Cmake和opencv环境安装

1 Cmake下载及安装 Download CMake 根据需要下载&#xff0c;历史版本下载方法如下 CMake 的版本号中的后缀 "rc1" 和 "rc2" 表示 Release Candidate 1 和 Release Candidate 2&#xff0c;它们都是候选版本&#xff0c;用于测试新功能和修复 bug。通常情…

Github 2024-03-23 Rust开源项目日报 Top10

根据Github Trendings的统计,今日(2024-03-23统计)共有10个项目上榜。根据开发语言中项目的数量,汇总情况如下: 开发语言项目数量Rust项目10Dart项目1RustDesk: 用Rust编写的开源远程桌面软件 创建周期:1218 天开发语言:Rust, Dart协议类型:GNU Affero General Public Li…