.Net Core Socket 压力测试
.Net Core Socket 压力测试
想起之前同事说go lang写的push service单机可以到达80万连接,于是就想测试下.Net Core能达到多少。简单地写了全异步的服务端和客户端代码(未作任何优化)。测试环境只是笔记本18万连接CPU点26%左右内存点1.2G,目测放到服务器上80万还是有希望。
一、测试代码
服务端:启动TcpListener监听,异步接受客户端连接AcceptTcpClientAsync。连接到达后异步读取客户端数据,收到数据后原封不动发送到客户端。
客户端:启动60个任务,每个任务依次异步连接到服务端,连接后启动数据收发任务,在收发任务中先改送140bytes左右的数据到服务端再读取服务端返回的数据,等待30s(Task.Delay)后循环前端的收发等待步骤。共60000个连接。
数据统计:服务端客户端中都有相应的数据统计,统计数据有:已连接Socket数量、发送的数据包总数、接收数据包数总数。
代码地址:https://github.com/chrishaly/TcpStressTest
二、测试方式
服务端:Windows 10,运行服务程序。
客户端:(1)Windows 10和服务端同一机器(2)Windows Server 2012 R2 - VMWare(3)Windows 7 - VMWare。由于Winodws对连接数有限制需要修改注册表增大连接数HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters下添加DWORD值 MaxUserPort=65534。在客户端主机上运行客户端程序。3个客户端各6万连接只18万连接
三、环境及结果(各进程详情)
主机 |
配置 |
Socket连接数 |
CPU占用 |
内存占用 |
服务端 |
笔记本i7-4720HQ, 16G内存 |
17.99万 |
19% ~36% |
1.2G |
客户端Win 10 |
笔记本i7-4720HQ, 16G内存 |
6万 |
5% |
241M |
客户端 Win 2012 |
VMWare 1 CPU 1 Core, RAM 2G |
6万 |
8%左右 |
318M |
客户端 Win 7 |
VMWare 1 CPU 4 Core, RAM 2G |
5.99万 |
8%左右 |
258M |
四、遇到的一些问题:主要也就Socket连接数限制,Windows上修改注册表即可。
五、插曲:客户端本来是要用Linux的,先是用了Debian 8.6 x64连接数达到1.6万左右出现了问题,找了下Debian最大连接数ulimit –a没有限制,就没继续找原因了。果断开了Ubuntu Server 16.04 TLS连接也是1.6万左右出现了AddressAlreadyInUse的异常,然后又试了桌面版的Ubuntu 16.04 TLS也有此问题。目的是测试虚拟机太多了另外换一个吧,就用了VMWare Win 7, VMWare Windows Server 2012 R2。Debian、Ubuntu连接数据的问题以后再看。
六、有图有真相: 4个运行窗口左上角那个是服务端
服务进程情况:PID为19944的为服务进程
.Net Core Socket 压力测试的更多相关文章
- loadrunner简单使用——HTTP,WebService,Socket压力测试脚本编写
使用loadrunner进行压力测试主要分两步,第一步是编写脚本(比较重点),第二步执行测试(配置都是在界面上点点就行了,当然我只的是比较简单的,能满足日常需要的),第三步分析结果(这一步比较高深,但 ...
- (转载)loadrunner简单使用——HTTP,WebService,Socket压力测试脚本编写
原文出处:http://ajita.iteye.com/blog/1728243/ 先说明一下,本人是开发,对测试不是特别熟悉,但因工作的需要,也做过一些性能测试方面的东西.比较久之前很简单的用过,最 ...
- .net core 使用ConcurrentTest组件对方法进行压力测试
工欲善其事,必先利其器!在编写服务中首先要有一个好的测试工具,在dontecore下性能测试有BenchmarkDotNet,只需要简单的配置一下就可以对方法的性能进行详细的测试.但有时候需要对不同并 ...
- 使用 WRK 压力测试工具对 ASP.NET Core 的接口进行压力测试
0. 简要介绍 WRK 是一款轻量且易用的 HTTP 压力测试工具,通过该工具我们可以方便地对我们所开发的 WebAPI 项目进行压力测试,并且针对测试的情况返回结果. PS:Wrk 并不能针对测试的 ...
- asp.net core系列 67 Web压力测试工具WCAT
一.介绍 最近搭建了一套CQRS框架,需要在投入开发前,进行必要的压力测试.Web Capacity Analysis Tool (Wcat)是一种轻量级HTTP负载生成工具,主要用于衡量受控环境中 ...
- apache的ab命令做压力测试
1. 最基本的关心两个选项 -c -n 例: ./ab -c 100 -n 10000 http://127.0.0.1/index.php -c 100 即:每次并发100个-n 10000 即: ...
- Nginx网络架构实战学习笔记(五):大访问量优化整体思路、ab压力测试及nginx性能统计模块、nginx单机1w并发优化
文章目录 大访问量优化整体思路 ab压力测试及nginx性能统计模块 ab压力测试及nginx性能统计模块 ab压力测试 nginx性能统计模块 nginx单机1w并发优化 整装待发: socket ...
- 开发 ASP.NET vNext 续篇:云优化的概念、Entity Framework 7.0、简单吞吐量压力测试
继续上一篇<开发 ASP.NET vNext 初步总结(使用Visual Studio 2014 CTP1)>之后, 关于云优化和版本控制: 我本想做一下MAC和LINUX的self-ho ...
- GPS部标监控平台的架构设计(七)-压力测试
部标监控平台的压力测试是部标检测流程的最后一个检测环节,也是最难的,很多送检的企业平台都是卡壳在这一个环节.企业平台面临的问题如下: 1.对于压力测试的具体指标要求理解含糊,只知道是模拟一万辆车终端进 ...
随机推荐
- 3.字符设备驱动------Poll机制
1.poll情景描述 以之前的按键驱动为例进行说明,用阻塞的方式打开按键驱动文件/dev/buttons,应用程序使用read()函数来读取按键的键值. ) { read(fd, &key_v ...
- Spring学习总结(5)——IOC注入方式总结
一.构造注入 在类被实例化的时候,它的构造方法被调用并且只能调用一次.所以它被用于类的初始化操作.<constructor-arg>是<bean>标签的子标签.通过其<v ...
- Nginx配置GZIP
记录一次解决网站加载慢的问题 一. nginx配置 gzip on;gzip_min_length 1k;gzip_buffers 4 16k;gzip_http_version 1.1;g ...
- 绝对定位等html结构,水平居中的处理方案
1.父子结构,父relative,子absolute.子元素要水平居中:left:50%:margin-left:子元素一半的宽度.因为定位的left是按左边框开始计算.[固定问题的模块化解决]
- Serializable中的serialVersionUID到底有啥用
最近在研究跨进程通信的问题,于是又再一次研究了,我们熟悉而又陌生的Serializable接口. 那么好,做过Java开发的朋友肯定对这个接口不陌生吧,Java中就是通过这个接口,来实现了序列化和反序 ...
- cocos2dx--vs2012+lua开发环境搭建
cocos2dx版本号:cocos2dx2.2.3 lua插件:babelua 1.5.3 下载地址:http://pan.baidu.com/s/1i3mPD8h 第一步:先关闭vs,双击下载下来 ...
- UIViewController所有API的学习。
<欢迎大家加入iOS开发学习交流群:QQ529560119> /* UIViewController is a generic controller base class tha ...
- Dcloud课程1 APP的架构有哪些
Dcloud课程1 APP的架构有哪些 一.总结 一句话总结:B/S架构和C/S构架 1.APP的分类? 主流的四大APP系统:1.苹果ios系统版本,开发语言是Objective-C:2.微软Win ...
- call,apply,求最大最小值,平均数等基础编程知识
CALL/APPLY.一些编程基础以及一些基础知识.正则 call.apply.bind 求数组的最大值和最小值: 数组排序(SORT的原理->localeCompare实现汉字比较),取头取尾 ...
- 洛谷——P3128 [USACO15DEC]最大流Max Flow
https://www.luogu.org/problem/show?pid=3128 题目描述 Farmer John has installed a new system of pipes to ...