SignalR的性能监测与服务器的负载测试
前言
也是好久没写博客了,近期确实很忙,嗯..几个项目..头要炸..今天忙里偷闲.继续我们的小系列..
先谢谢大家的支持..
我们来聊聊SignalR的性能监测与服务器的负载测试
我们开发任何一个应用,他的性能监测是很重要的参考数据,关系着我们后期优化,更新,改动..等等...
SignalR作为一个及时通讯的框架,稳定性,及时性,延迟这些,更是需要全方位的监测
(就不多废话了,大家都懂)
负载测试... 装个大点的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,会自动选择最优的,
WebSockets,serversentevents
,longpolling
(注意: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源码就能看到,也希望有大神能被我这块砖引出来根据源码扩展个更好的负载工具或者监控工具.
相关文章:
ASP.NET SignalR 高可用设计
ASP.NET SignalR 2.0入门指南
SignalR SelfHost实时消息,集成到web中,实现服务器消息推送
ASP.NET WebHooks Receivers 介绍-WebHooks 让其变得便捷
Signalr系列之虚拟目录详解与应用中的CDN加速实战
采用HTML5+SignalR2.0(.Net)实现原生Web视频
基于.NET SingalR,LayIM2.0实现的web聊天室
基于SignalR的消息推送与二维码描登录实现
原文地址:http://www.cnblogs.com/GuZhenYin/p/5900253.html
.NET社区新闻,深度好文,微信中搜索dotNET跨平台或扫描二维码关注
SignalR的性能监测与服务器的负载测试相关推荐
- SignalR系列续集[系列8:SignalR的性能监测与服务器的负载测试]
目录 SignalR系列目录 前言 也是好久没写博客了,近期确实很忙,嗯..几个项目..头要炸..今天忙里偷闲.继续我们的小系列.. 先谢谢大家的支持.. 我们来聊聊SignalR的性能监测与服务器的 ...
- mqtt服务器性能分析,MQTT服务器动态负载均衡的研究与应用
1. 引言 随着越来越多的工业设备接入物联网,因处理器能力.网络带宽等具有局限性,所以对其通信技术提出了更高的要求 [1].作为网页标准的HTTP,已不能满足机器之间的大规模沟通,其请求/回答模式不再 ...
- 负载测试压力测试强度测试稳定性测试
你看,如标题所示,测试可以分为这么多种.实际上,这只是一种性能测试的分类.按照不同的标准,还可以有别的划分. 1.按开发阶段:单元测试.集成测试.系统测试.验收测试 2.按测试实施组织:α测试(开发方 ...
- jmeter 多机负载压测与服务器性能监测
环境: jmeter: apache-jmeter-3.3 jdk: 负载生成: 被测机: 一. 多机负载压测: 概述: 1.修改jmeter.properties配置文件 remote_hosts= ...
- pg高性能服务器,Pgpool-II 负载均衡对PG的性能影响
Pgpool-II相当于中间件,Pgpool-II与PG是解耦合的,基于这样的机制,Pgpool-II可以搭建在已经存在的任意版本的PG主从结构上,主从结构的实现与Pgpool-II无关,可以通过sl ...
- Linux CPU负载性能监测
Linux CPU性能监测 平均负载和 CPU 使用率 压测命令 stress 模拟负载场景 监测工具 top mpstat pidstat 补充:自愿上下文切换和非自愿上下文切换 平均负载和 CPU ...
- jp@gc - PerfMon Metrics Collector:服务器性能监测控件
1.Jmeter插件下载 安装安装下面三个插件 ,就可以像Loadrunner一样监控服务器CPU.内存等性能参数 下载客户端插件JMeterPlugins-Standard 和 JMeterPlu ...
- WAS服务器负载测试软件导读
转帖:出处未知 你的Web服务器和应用到底能够支持多少并发用户访问?在出现大量并发请求的情况下,软件会出现问题吗?这些问题靠通常的测试手段是无法解答的.本文介绍了Microsoft为这个目的而提供的免 ...
- Linux 性能监测工具
Linux系统出现问题时,我们不仅需要查看系统日志信息,而且还要使用大量的性能监测工具来判断究竟是哪一部分(内存.CPU.硬盘--)出了问题.在Linux系统中,所有的运行参数保存在虚拟目录/proc ...
最新文章
- ubuntu更改默认python版本_更改Ubuntu默认python版本的方法
- 在linux中500g怎么分区,500G的硬盘,怎么分区比较合理?
- C++ class实现双向循环链表(完整代码)
- SprinBoot 集成 Flowable 工作流引擎镜像制作
- flex图表坐标轴样式设置
- ASCII编码:LinuxWindows
- 基于MFC对话框的qq游戏连连看外挂
- lg相乘公式_lg函数(log的公式大全)
- [语音处理] 声谱图(spectrogram)FBank(Mel_spectrogram)MFCC(Mel倒谱)到底用哪个作为NN输入?
- 电子计算机硬件是由哪五个部分构成,计算机硬件系统由哪五个基本部分组成?...
- 机器学习:特征选择之RFormula(SparkMLlib中的RFormula)
- pythonRuntimeError: Cannot re-initialize CUDA in forked subprocess. To use CUDA with multiprocessing
- linux中脚本都是.sh吗,Linux跑脚本用sh和./有什么区别?
- 2022年下半年信息系统项目管理师下午真题及答案解析
- Android网络:开发浏览器(五)——功能完善之保存图片实现
- 在html页头设置不缓存
- windows11 git 安装SSH密钥
- ubuntu系统的文件权限获取
- PostgreSQL 12 中文文档
- 至多删三个字符 (35分)
热门文章
- 磁盘 I/O性能指标
- .Net Core手撸一个基于Token的权限认证
- .NET MAUI 已在塔架就位 ,4月份发布RC
- .NET 7 预览版2 的亮点之 NativeAOT 回顾
- K8s 中使用 cert-manager 申请免费 Https 证书
- 还在纠结Dapper或者EF Core?不妨试试“混合ORM”--RepoDb
- 数据资产纳入国资保值增值考核
- NET问答: C# 中是否有 format json 的类库?
- 如何在 ASP.NET Core 中使用 URL Rewriting 中间件
- Sql Server之旅——第六站 为什么都说状态少的字段不能建索引