SignalR系列续集[系列8:SignalR的性能监测与服务器的负载测试]

简介: 原文:SignalR系列续集[系列8:SignalR的性能监测与服务器的负载测试]目录 SignalR系列目录 前言 也是好久没写博客了,近期确实很忙,嗯..几个项目..头要炸..今天忙里偷闲.
原文: SignalR系列续集[系列8:SignalR的性能监测与服务器的负载测试]

目录

SignalR系列目录

前言

也是好久没写博客了,近期确实很忙,嗯..几个项目..头要炸..今天忙里偷闲.继续我们的小系列..

先谢谢大家的支持..

我们来聊聊SignalR的性能监测与服务器的负载测试

我们开发任何一个应用,他的性能监测是很重要的参考数据,关系着我们后期优化,更新,改动..等等...

SignalR作为一个及时通讯的框架,稳定性,及时性,延迟这些,更是需要全方位的监测

(就不多废话了,大家都懂)

负载测试...  装个大点的B.. 人家淘宝爸爸双十一这么大的访问压力,就是靠着多轮负载测试才有的今天..(咳咳,B装的有点大,大神无视)

 

测试环境

开发工具:VS2013   数据库:无   SignalR版本:2.2  系统:Win7  

正文

嗯,读本文之前,你需要去GitHub上下载SignalR源码 : 点我下载

话不多说,我们先来说性能监测

我们下载了SignalR源码,打开它,找到Microsoft.AspNet.SignalR.Utils这个项目,编译..

我们会在Debug中看到signalr.exe这个文件

当然..直接运行是不行的.CMD,找到 (你的存放路径)\SignalR-dev\SignalR-dev\src\Microsoft.AspNet.SignalR.Utils\bin\Debug

运行命令行:SignalR.exe ipc

会看到下图:

这就是安装OK了..

然后,接着,我们右键,我的电脑>管理>性能监视器

如图:

打开性能监视器,右键添加,或者直接点击绿色的加号,

找到SignalR,在下面的框中找到自己需要监控的实例(使用了SignalR的实例都在里面),选择添加,点击确定

如图:

这样,我们就可以及时的监控到SignalR的运行情况,连接数量等等数据(数据太多,我就不一一列出了)...

如下图:

性能监控到此就结束了,接下来,我们要讲讲负载测试

 

 

负载测试

关于负载测试.

SignalR给我们提供了不少工具,比如Microsoft.AspNet.SignalR.Crank.(这个大家先记住,后面我们会用到)

这个也是一个小工具,并不是什么类库,当然,是开源的,有兴趣的大神可以去研究研究基于这个写一个适合自己项目的负载测试工具..

同样,需要下载SignalR源码,不过,这次我们编译的是Microsoft.AspNet.SignalR.Crank.这个类库.

编译完成之后,我们继续打开SignalR源码找到Microsoft.AspNet.SignalR.LoadTestHarness这个项目,

看名字就很明显了..这是官方爸爸给我们写好的一个负载测试工具,当然,源码也可以随意看,自行修改或者扩展.

源码我就不贴出来了,大家可以自己去看主要内容都在Dashboard.cs这个类里面

我们把这个项目设置为启动项,直接运行,得到如下页面:

PS:界面当然是英文的,我随意找了个翻译工具 翻译了一下,大概意思也都差不多..

我们可以选择连接行为,设置发送频率  (信息/每秒,..不是味精.. 哈哈哈哈 - -)

当然,也可以设置每条信息的数据量大小

点击负载生成器,会看到如下界面:

嗯,其实就是打开了一个新的连接,相当于多了一个用户进行连接,设置好定时发送时间,点击Go...就开始发送了..

虽然这个小工具..已经很比较完善了,但是,我们的服务器..是要进行负载压力测试的..一个个的点击页面,这要点到什么时候?(麒麟臂可以无视)..

所以这就需要我们前面提到过的工具:Microsoft.AspNet.SignalR.Crank

首先,我们还是编译它,然后CMD进入它的路径(当然,在服务器上用,不需要源码,编译好复制上去就行):

输入命令: crank /?

会看到如下图的信息:

大致翻译一下:

  • / ?:显示屏幕上的帮助。 如果显示的可用选项也Url参数被省略。

  • / Url:SignalR的URL连接。 这个参数是必需的。 SignalR应用程序使用默认映射,路径将在“/ SignalR”结束。

  • /Transport:选择连接方式。 默认值是auto,会自动选择最优的,WebSocketsserversenteventslongpolling(注意:foreverframe不行

  • / BatchSize:添加到每一批客户的数量。 默认是50。

  • / ConnectInterval:添加连接之间的间隔以毫秒为单位。 默认值是500。

  • /Connections:用于负载测试的应用程序的连接数量。 默认值是100000。

  • / ConnectTimeout:超时关闭的毫秒数。 默认值是300。

  • MinServerMBytes:最小服务器兆字节。 默认值是500。

  • SendBytes:有效负载发送到服务器的大小字节。 缺省值是0。

  • SendInterval:消息到服务器之间的延迟毫秒。 默认值是500。

  • SendTimeout:发送到服务器超时的毫秒数。 默认值是300。

  • ControllerUrl:

  • NumClients:

  • Logfile:测试运行的日志文件的文件名。 默认值是crank.csv

  • SampleInterval:性能计数器样本之间的时间,以毫秒为单位。 默认值是1000。

  • SignalRInstance:为服务器上的性能计数器实例名称。 默认是使用客户端连接状态。

这里,我们为了测试,输入:crank /Connections:100 /Url:http://localhost:29573/TestConnection /BatchSize:10

也就是每10批加入连接,加入100个.

连接添加完毕了,我们进入刚才的页面,进行广播

如下图:

这里我们设置的每秒10条信息.1024b大小,用户量170,可以明显在监控中看到,我的渣渣电脑CPU已经彪到74%了..

本文到此就结束了..

 

 

写在最后

SignalR目前是完全开源的,文章中所涉及到的项目,大家下载SignalR源码就能看到,也希望有大神能被我这块砖引出来根据源码扩展个更好的负载工具或者监控工具.

目录
相关文章
|
13天前
|
数据采集 监控 机器人
浅谈网页端IM技术及相关测试方法实践(包括WebSocket性能测试)
最开始转转的客服系统体系如IM、工单以及机器人等都是使用第三方的产品。但第三方产品对于转转的业务,以及客服的效率等都产生了诸多限制,所以我们决定自研替换第三方系统。下面主要分享一下网页端IM技术及相关测试方法,我们先从了解IM系统和WebSocket开始。
30 4
|
6天前
|
存储 缓存 运维
阿里云服务器经济型e与通用算力型u1实例各自性能、适用场景区别及选择参考
在选择阿里云服务器实例规格时,经济型e实例和通用算力型u1实例因其高性价比和广泛适用性,备受个人开发者、中小企业的青睐。在同地域、相同配置的情况下,经济型e和通用算力型u1实例的价格相对于其他实例规格要低一些,很多个人和初创企业用户都会优先考虑选择这两个实例规格的云服务器,那么它们之间有什么区别?各自的性能、适用场景上有何区别?我们应该如何选择呢?本文将详细解析这两款实例的性能特点、适用场景、价格优势及购买建议,帮助用户更好地理解并选择合适的云服务器实例。
|
1月前
|
运维 Prometheus 监控
如何在测试环境中保持操作系统、浏览器版本和服务器配置的稳定性和一致性?
如何在测试环境中保持操作系统、浏览器版本和服务器配置的稳定性和一致性?
|
11天前
|
算法 Java 测试技术
Benchmark.NET:让 C# 测试程序性能变得既酷又简单
Benchmark.NET是一款专为 .NET 平台设计的性能基准测试框架,它可以帮助你测量代码的执行时间、内存使用情况等性能指标。它就像是你代码的 "健身教练",帮助你找到瓶颈,优化性能,让你的应用跑得更快、更稳!希望这个小教程能让你在追求高性能的路上越走越远,享受编程带来的无限乐趣!
56 13
|
17天前
|
并行计算 算法 测试技术
C语言因高效灵活被广泛应用于软件开发。本文探讨了优化C语言程序性能的策略,涵盖算法优化、代码结构优化、内存管理优化、编译器优化、数据结构优化、并行计算优化及性能测试与分析七个方面
C语言因高效灵活被广泛应用于软件开发。本文探讨了优化C语言程序性能的策略,涵盖算法优化、代码结构优化、内存管理优化、编译器优化、数据结构优化、并行计算优化及性能测试与分析七个方面,旨在通过综合策略提升程序性能,满足实际需求。
46 1
|
24天前
|
缓存 Ubuntu Linux
Linux环境下测试服务器的DDR5内存性能
通过使用 `memtester`和 `sysbench`等工具,可以有效地测试Linux环境下服务器的DDR5内存性能。这些工具不仅可以评估内存的读写速度,还可以检测内存中的潜在问题,帮助确保系统的稳定性和性能。通过合理配置和使用这些工具,系统管理员可以深入了解服务器内存的性能状况,为系统优化提供数据支持。
31 4
|
23天前
|
存储 机器学习/深度学习 编解码
阿里云服务器计算型c8i实例解析:实例规格性能及使用场景和最新价格参考
计算型c8i实例作为阿里云服务器家族中的重要成员,以其卓越的计算性能、稳定的算力输出、强劲的I/O引擎以及芯片级的安全加固,广泛适用于机器学习推理、数据分析、批量计算、视频编码、游戏服务器前端、高性能科学和工程应用以及Web前端服务器等多种场景。本文将全面介绍阿里云服务器计算型c8i实例,从规格族特性、适用场景、详细规格指标、性能优势、实际应用案例,到最新的活动价格,以供大家参考。
|
23小时前
|
存储 Oracle 固态存储
阿里云服务器ESSD云盘性能级别详解
存储性能对于应用的运行效率和用户体验至关重要,阿里云作为领先的云服务提供商,为用户提供了多种存储解决方案,其中ESSD云盘以其高性能和灵活性备受关注。本文将详细介绍阿里云服务器ESSD云盘的四种性能级别——PL0、PL1、PL2和PL3,以及它们各自的单盘IOPS性能上限和容量大小等关键信息,帮助您更好地选择适合自身需求的存储方案。
|
28天前
|
存储 弹性计算 缓存
阿里云服务器通用型g8i实例性能与使用场景介绍及最新收费标准参考
阿里云ECS通用型g8i服务器采用阿里云全新CIPU架构,可提供稳定的算力输出、更强劲的I/O引擎以及芯片级的安全加固。ECS通用型g8i实例支持开启或关闭超线程配置,单台g8i实例最高支持100万IOPS。阿里云ECS通用型g8i实例CPU采用Intel®Xeon®Emerald Rapids或者Intel®Xeon®Sapphire Rapids,主频不低于2.7 GHz,全核睿频3.2GHz。本文为大家介绍通用型g8i实例性能与使用场景介绍及最新收费标准,以供参考。
|
23天前
|
监控 JavaScript 前端开发
如何在实际应用中测试和比较React和Vue的性能?
总之,通过多种方法的综合运用,可以相对客观地比较 React 和 Vue 在实际应用中的性能表现,为项目的选择和优化提供有力的依据。
31 1