.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.对于压力测试的具体指标要求理解含糊,只知道是模拟一万辆车终端进 ...
随机推荐
- 六、Docker+Gitlab
原文:六.Docker+Gitlab (1)下载镜像: docker pull gitlab/gitlab-ce (2)运行镜像: GITLAB_HOME=`pwd`/data/gitlab dock ...
- CISP/CISA 每日一题 15
CISA 每日一题(答) 作业记帐: 监控和记录信息系统资源的使用,这些信息可被信息系统审计师用来执行: 1.将资源使用和相关用户挂钩以便实行计费: 2.通过改变系统软件的默认设置来最优化硬件性能 作 ...
- Servlet 规范笔记—基于http协议的servlet
在上一章节,我们大概的描述了servlet的规范以及servlet和servlet容器的概念和用途,我们清楚的知道servlet容器提供了接收来自client端的请求,然后根据请求进行处理(如:执行对 ...
- 2.1 使用eclipse4.4 搭建 maven简单结构项目。
1.前言 1.本博客面向0基础开发人员. 2.本博客为系列博客.<1.X>系列为服务器数据库相关技术,前几章为简单搭建linux+tomcat+mysql+nginx+redis.< ...
- 【SSH学习笔记】—从配置Struts1环境到简单实例
以下我将从一个简单点的计算器实例,介绍struts1的环境配置,以及其重要的两个核心类:ActionForm和Action 简单计算器实现思路: 1.提供一个输入界面,输入两个数字和运算符(+.-. ...
- 全球可信并且唯一免费的HTTPS(SSL)证书颁发机构:StartSSL
全球可信并且唯一免费的HTTPS(SSL)证书颁发机构:StartSSL http://blog.s135.com/startssl/ 购买权威机构的证书一年大概得七八千元,其实这是不值得的,所以一直 ...
- Spark SQL概念学习系列之Spark SQL基本原理
Spark SQL基本原理 1.Spark SQL模块划分 2.Spark SQL架构--catalyst设计图 3.Spark SQL运行架构 4.Hive兼容性 1.Spark SQL模块划分 S ...
- 文件上传流式处理commons-fileupload
1. 从请求中获取MultipartFile @RequestMapping(value="/upload", method=RequestMethod.POST) public ...
- JQuery EasyUI Combobox 实现省市二级联动菜单
//编辑改动或新增页面联动能够这样写 jQuery(function(){ // 省级 $('#province').combobox({ valueField:'itemvalue', //值字段 ...
- 比較C++和Java 二
26.Java内置多线程支持.你能够通过继承Thread类来创建一个新的线程(重写run()方法).相互排斥发生在使用synchronized关键字作为类型修饰符修饰方法的对象级别. 在任一时刻,仅仅 ...