强大的TcpServer压力测试工具源码(附突破连接限制的方法和工具)

Jmeter tcp压测实践 github地址,欢迎star 项目需要针对socket协议接口进行性能测试。选定了比较熟悉的 Jmeter 工具,现记录下过程。 新建 Tcp Sampler Jmeter 提供了3个Tcp实现类: TCPClientImpl。这是实现文本消息交换的基本类。在TCP取样器中,Text to send字段提供不同字符集的文本常量或可变字符串信息。 BinaryTCPClientImpl。这... 阅读详情

      强大的TcpServer压力测试工具源码(附突破连接限制的方法和工具)

 

关键词:IOCP TcpServer TcpClient 完成端口 服务器 达到6万连接 突破连接限制 压力测试工具 堵塞锁 非堵塞锁 无锁 Lock Free 并发队列 并发可扩充环形队列

 

首先感谢在行动和精神上给予本人支持的各位同行,在过去的日子,使得本人的IOCP研究进入了崭新的领域。本文及附件希望能给予更多人的帮助,限于商用等原因,除了原来的0.85版开源之外,更高版本不便开源,仅简单描述一些技术要点,请谅解。但附件的压力工具源码,仍然能给予很多帮助,比如封包、解包、处理粘包等,同是压力工具还能帮助开发者测试服务器的性能,而且此帮助并不仅仅是一般的帮助。(其他的IOCP方法网上都有介绍,这里不多说。)

一、TcpServer

1、结构及流程

 

A、看守线程负责响应接受投递不足时的事件并投递接受请求,同是处理空连接和心跳超时

B、工作线程负责处理读写完成及读写错误的处理,并投递给处理线程

C、由于在工作处理数据及进行文件和数据库读写等操作可能会造成通信“卡”的现象,因此增加了处理线程,通过完成队列和线程池,接受工作线程投递过来的事件,处理线程通过回调函数将IO操作结果传递给应用层,应用层完全可以在回调函数里处理数据,从而实现了0拷贝功能,并保证数据的有序处理。

2、运行信息

为能更好的测试模块,开发者可参考截图的信息内容,对自己的模块进行测试开发工作,以帮助观察运行情况判断问题所在。

 

二、不可忽视的关闭工作

很多人在关闭通讯模块的时候,关闭所有连接和线程然后把记录的所有的内存都一一释放就结束了关闭工作。这样尽管没有内存泄露,但却可能隐蔽了其他问题。

正确的做法是:

1、关闭监听

2、关闭所有在线连接

3、等待关键计数器(内存池、连接池等使用计数器)归零 (这一步非常重要,这步过不了关肯定有问题)

4、关闭所有线程

5、逐一释放内存资源

6、变量复位

三、后IOCP时代

个人认为,微软的IOCP模型并不是Windows socket的终极,IOCP部分功能和效率仍然有待改进,以及Windows socket接口仍然不是高效率的体现,对开发有高要求的人,尤其是研究过Win2000源码的人,更深有体会。大家都知道,凡是满足功能强大的软件,效率在一定程度上会打折扣,针对高效率模型提供专有的Socket API才是关键,而不是一个API通用任何模型。微软到底是改进现有功能呢,还是提供更有效率的模型,这个只有微软才知道了。

四、IOCP的更高境界

入题前先给线程同步的锁分类:1、堵塞锁:系统提供的内核态的同步机制(内核态切换的效率众所周知),2.、非堵塞锁:诸如LockFree等使用原子操作指令完成的同步机制,3、无锁:堵塞锁、非堵塞锁之外的同步机制,确实的说是没有锁的机制。网络及书本上介绍的IOCP,常用做法都是使用堵塞锁的方式,打破传统思维才能获得创新。在过去的日子中,本人已经实现了非堵塞锁并发同步的IOCP模块。并根据IOCP Tcp Server的特殊情况,能在多线程下某些竞争的地方不使用锁亦能实现并发式同步的功能。这个模块实现,需要对IOCP Tcp Server的数据结构(主要是队列)进行深入分析,根据实时性、使用频率等归纳总结,判断出:哪些需要立即处理的,哪些可以暂缓处理而又不影响效率的,哪些需要锁的,哪些不需要锁的,哪些需要堵塞锁的,哪些不需要堵塞锁的,需要堵塞锁的能不能换个角度可以使用非堵塞锁来解决等。

五、附件

1、突破连接限制的注册表设置方法及工具

比较全面的介绍突破连接限制。

2、功能相当强大的压力测试工具的源码、G-TcpClient.Lib(限制版)

有助于开发者学习和制作测试压力测试工具,另有封包、解包、处理粘包等。G-TcpClient.Lib是限制版,主要是和压力工具配套方便学习压力工具源码。

3、堵塞锁模式的服务器Exe、堵塞锁模式的压力测试工具exe

有助于测试自己的服务器和客户端。压力测试工具单机可以达到6万连接,附有说明书。

 

 

 

前一版本的测试运行界面

16CPU Server:

 

 

8CPU Client:

 

 

 

再次补丁版,下载链接(若发现有Bug,请反馈情况,或再来下载吧,感谢对beta版的支持):

http://download.youkuaiyun.com/source/2568402

忘记设置0分下载,没有分下载的可重新注册一个ID吧。

 

TCP长连接开发相关,调试工具SocketTool与框架GatewayWorker 前言:将近一年未更新博客了,最近在做一个新项目,涉及到服务端与客户端之间的通信,使用到这款网络TCP/UDP通信调试工具。本人对TCP/UDP等通信相关知识不甚了解,正好以此为契机,在网上搜罗了相关资料以备不时之需。 简单介绍下这个软件:SocketTool是一款网络TCP/UDP通信调试工具,免安装且免费使用。可以帮助网络编程人员、网络维护人员检查所开发的网络应用软硬件的通信情况。是一款非常好... 阅读详情

相关推荐

C++高性能网络库Fastsocket:多Reactor模型与内存池优化实践

在C++服务端开发中,网络通信框架是构建高并发、低延迟应用的核心基础。其核心原理通常基于事件驱动模型,通过Reactor模式高效管理海量连接与IO事件,以最大化利用现代多核硬件性能。这类技术的核心价值在于,通过精巧的架构设计,在提供简洁开发接口的同时,实现极致的吞吐量与资源利用率,广泛应用于游戏服务器、实时通信、金融交易等对性能有严苛要求的场景。本文聚焦的Fastsocket网络库,正是这一理念的工程实践典范。它通过改良的多Reactor架构实现高效的连接与事件分发,并深度优化内存管理,采用对象池与内存池技

weixin_30703911的博客 377

TCP Socket Client 测试工具,并发测试

TCP协议 Socket客户端测试程序。发送数据支持ASCII与16进制格式。创建终端,然后发送数据。可以模拟并发压力测试。

2631

TCPserver测试工具

tcpserver,可以作为tcpclient测试工具。用于检测主机与TCP Server之间经过三次握手建立TCP连接的速度!

tcp 压测工具

因为从事服务端开发,所以想开发一款tcp相关的测试工具来进行接口以及压力测试,web前端使用了bootstrap,后端采用go语言开发。 效果见下: 通过浏览器访问压测工具地址,填好主机信息,添加请求数据,点击创建压测任务。 创建好后,点击查看压测任务,查看任务详情。 点击开始执行,执行压测任务 执行结果(由于是测试的本地运行的服务端,网络延时几乎没有,时间太短了导致单次请求花费的最小时间(ms)出bug了,不过不碍事,大体数据是正确的) 接下来看看tcp返回测试功能,填好主机端口,点击连接。 填

保持好奇 4087

保姆级教程:用CameraX API快速搞定Android多摄像头切换与预览(附避坑指南)

本文提供了一份详细的CameraX API教程,帮助开发者快速实现Android多摄像头切换与预览功能。通过简化API设计和生命周期感知能力,CameraX大幅降低了开发复杂度,同时解决了多摄像头兼容性、预览优化等常见问题。文章包含完整代码示例和实战避坑指南,特别适合需要高效集成相机功能的Android开发者。

weixin_42699679的博客 165

Spark on Yarn 高可用模式部署流程

本文介绍了如何配置Spark和Yarn的高可用(HA)环境,以确保在大规模数据处理中避免单点故障。

xhaoDream的博客 1443

tcp 压力 测试 软件,强大的TcpServer压力测试工具及源码(附突破连接限制的方法和工具)...

压缩包 : 强大的TcpServer压力测试工具及源码(附突破连接限制的方法和工具).rar 列表G-Sockets(压力测试工具源码)\Demos\G-TcpClientDemo\G-TcpClientDemo.apsG-Sockets(压力测试工具源码)\Demos\G-TcpClientDemo\G-TcpClientDemo.cppG-Sockets(压力测试工具源码)\Demos\G-T...

weixin_39776298的博客 3574

深入解析SAP MM模块OBYC自动科目分配机制:从T030表到实战配置

本文深入解析SAP MM模块中OBYC自动科目分配机制,阐明其作为连接物流与财务核心桥梁的作用。文章以T030表为核心,详细拆解其字段结构与检索逻辑,并通过采购收货、生产发料等实战场景,手把手演示配置步骤与关键要点,帮助读者掌握从原理到实践的完整知识体系,实现业财无缝对接。

nft7creator的博客 356

G-Sockets(IOCP) 2.5 Demo 源码 (VC2008 & Delphi7/2010)下载

       G-Sockets(IOCP)最新版本的Iocp Tcp Server 完成端口服务器通讯模块Demo源码及技术文档,包括粘包处理源码、客户端突破6W连接限制的文档、强大的服务器(Tcp Server)压力测试工具及无限制的EXE服务器程序(供体验测试)。        有关Iocp技术请阅读本博客其他帖子。        声明:未授权的DLL或LIB,是限制版,本人不保证它能正...

码客 卢益贵 ygluu 1万+

CLIP-Count代码配置以及踩坑记录

CLIP-Count代码配置以及踩坑记录

学术菜鸡 1011

基于任务的功能磁共振成像的连接性分析

虽然这种方法通过减少偶然只选择特异性代表的可能性来改善可推广性,但类别内和类别间的变异性变得更难控制(例如,"鸟类"可能是一个比"车辆"更加/不那么同质的类别),并且可能会出现关于这些预定义类别是否是现实世界实体的有意义划分的担忧——尽管这个限制在某种程度上可以通过表征相似性分析来解决。特别是,海马单变量激活和语义认知区域(左下额回)中语义信息的表征强度之间的交互预测了项目的概念记忆,而海马单变量激活和视觉处理区域(腹内侧枕叶皮层)中视觉属性的表征强度之间的交互预测了图像样本的知觉记忆。

cc1609130201的博客 2228

Iocp Tcp Server——G-Socket1.1 Demo源码(VC & Delphi)

最新版本的G-Socket Demo(VC2008 Delphi 7&2010)源码及技术文档,包括粘包处理源码、客户端突破6W连接限制的文档、强大的Tcp Server测试工具。  下载连接(最新的在最前面,看日期): 声明:未授权的DLL或LIB,是限制版,本人不保证它能正常使用,有关限制信息,注意参看日志文件。 压力测试工具G-TcpClientDemo.exe修复Bu

码客 卢益贵 ygluu 7480

别光看手册!手把手教你用SGM2036 LDO设计一个稳定3.3V转1.8V的MCU供电电路(附PCB布局避坑指南)

本文详细介绍了如何使用SGM2036 LDO设计一个稳定的3.3V转1.8V的MCU供电电路,包括需求分析、芯片选型、外围器件计算、PCB布局避坑指南及实测验证。通过实际案例和计算示例,帮助工程师快速掌握LDO应用技巧,确保系统电源稳定可靠。

weixin_42548893的博客 504

qt网络学习资源链接

QT网络编程★★★ QT TCP网络编程 Qt获取IP地址、MAC地址等网卡信息,区分本地网卡、无线网卡和虚拟网卡 TCP、UDP数据包大小的限制

老金的博客 232

RAG——RAG 索引(文档解析技术)

本文介绍了RAG系统中文档解析的关键技术,重点分析了如何通过LangChain的Document Loaders处理多种格式文档。文章指出高质量文档解析对RAG系统效果的决定性作用,并详细讲解了PDF、TXT、Word等常见格式的解析方法。作者提供了代码示例和Gitee开源项目链接,特别强调了PDF解析的深入方案,同时介绍了相关依赖库的安装配置。文章还展示了如何定义通用文档加载方法,为开发者提供了实用的技术参考。

小志的博客 750

【Flink】FlinkCDC获取mysql数据时间类型差8小时时区解决方案

​ 1、背景: 在我们使用FlinkCDC采集mysql数据的时候,日期类型是我们很常见的类型,但是FlinkCDC读取出来会和数据库的日期时间不一致,情况如下 FlinkCDC获取的数据中create_time字段1694597238000转换为时间戳2023-09-13 17:27:18,而数据库中原始数据如下,并没有到下午5点,这就导致了FlinkCDC读出来的时间和数据库中实际的时间不一致的情况,与数据库对比可以发现,这里的时间戳与数据库时间刚好相差了 8 个小时,在实际生产中这种情况是不

一杯咖啡半杯糖的博客 3854

Python http.server 深度解析:从命令行到HTTPS生产级实践

HTTP服务器是Web开发的基础组件,其核心在于TCP连接管理、HTTP协议解析与响应生成。Python标准库中的http.server模块提供了零依赖、轻量可控的协议实现,本质是基于socket的同步HTTP/1.x服务框架。它不内置SSL支持,需手动集成ssl模块完成TLS握手;不提供路由抽象或中间件机制,但赋予开发者对请求头、状态码、响应体的完全控制权。这种底层可见性使其成为理解Web协议栈、调试500.19类IIS错误、排查certificate_verify_failed证书验证失败问题的理想沙盒

weixin_33743248的博客 371

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

用jmeter压测tcp

在工作中有个接口是tcp协议的,然后需要压测一下,就想到jmeter有现成的tcp取样器,百度了一下,压测流程大致和http差不多,需要注意的是tcp请求的一些设置,在此记录一下~

weixin_44857268的博客 7843

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

jmeter TCP接口压力测试

启动jmeter,添加线程组、TCP取样器、察看结果树 1.添加线程组 2.添加TCP取样器 3.添加监听器察看结果树 配置TCP取样器参数信息 1.TCPClient classname:报文格式,分3种: org.apache.jmeter.protocol.tcp.sampler.TCPClientImpl:普通文本传输 org.apache.jmeter.protocol.tcp.sampler.BinaryTCPClientImpl:十六进制报文 org.apache.jmeter.pro

viola_M的博客 1万+

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

上一篇: 代码客:G-Socket(IOCP) 1.0(Server/Client)例程源码+Server体验程序+强大的压力测试工具
下一篇: 牧码客(卢益贵):专业取名软件——吉名宝
ygluu
博客等级 码龄17年 300粉丝 62原创
评论 10
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值