SignalR系列续集[系列8: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,会自动选择最优的,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源码就能看到,也希望有大神能被我这块砖引出来根据源码扩展个更好的负载工具或者监控工具.
SignalR系列续集[系列8:SignalR的性能监测与服务器的负载测试]的更多相关文章
- SignalR系列续集[系列6:使用自己的连接ID]
目录 SignalR系列目录 前言 老规矩,前言~,在此先道个歉,之前的1-5对很多细节问题都讲的不是很详细,也有很多人在QQ或者博客问我一些问题 所以,特开了这个续集.. - -, 讲一些大家在开发 ...
- [渣译文] SignalR 2.0 系列:SignalR的服务器广播
英文渣水平,大伙凑合着看吧…… 这是微软官方SignalR 2.0教程Getting Started with ASP.NET SignalR 2.0系列的翻译,这里是第八篇:SignalR的服务器广 ...
- SignalR 2.0 系列:SignalR的服务器广播
英文渣水平,大伙凑合着看吧…… 这是微软官方SignalR 2.0教程Getting Started with ASP.NET SignalR 2.0系列的翻译,这里是第八篇:SignalR的服务器广 ...
- [渣译文] SignalR 2.0 系列:SignalR的高频实时通讯
原文:[渣译文] SignalR 2.0 系列:SignalR的高频实时通讯 英文渣水平,大伙凑合着看吧…… 这是微软官方SignalR 2.0教程Getting Started with ASP.N ...
- [渣译文] SignalR 2.0 系列: SignalR 自托管主机
原文:[渣译文] SignalR 2.0 系列: SignalR 自托管主机 英文渣水平,大伙凑合着看吧…… 这是微软官方SignalR 2.0教程Getting Started with ASP.N ...
- [渣译文] SignalR 2.0 系列: 支持的平台
原文:[渣译文] SignalR 2.0 系列: 支持的平台 英文渣水平,大伙凑合着看吧,并不是逐字翻译的…… 这是微软官方SignalR 2.0教程Getting Started with ASP. ...
- [渣译文] SignalR 2.0 系列: SignalR简介
原文:[渣译文] SignalR 2.0 系列: SignalR简介 英文渣水平,大伙凑合着看吧,并不是逐字翻译的…… 这是微软官方SignalR 2.0教程Getting Started with ...
- SignalR 2.0 系列: SignalR简介
SignalR 2.0 系列: SignalR简介 英文渣水平,大伙凑合着看吧,并不是逐字翻译的…… 这是微软官方SignalR 2.0教程Getting Started with ASP.NET S ...
- 史上最全面的SignalR系列教程-4、SignalR 自托管全解(使用Self-Host)-附各终端详细实例
1.概述 通过前面几篇文章 史上最全面的SignalR系列教程-1.认识SignalR 史上最全面的SignalR系列教程-2.SignalR 实现推送功能-永久连接类实现方式 史上最全面的Signa ...
随机推荐
- 采用MiniProfiler监控EF与.NET MVC项目(Entity Framework 延伸系列1)
前言 Entity Framework 延伸系列目录 今天来说说EF与MVC项目的性能检测和监控 首先,先介绍一下今天我们使用的工具吧. MiniProfiler~ 这个东西的介绍如下: MVC Mi ...
- 【腾讯bugly干货分享】HTML 5 视频直播一站式扫盲
本文来自于腾讯bugly开发者社区,非经作者同意,请勿转载,原文地址:http://bugly.qq.com/bbs/forum.php?mod=viewthread&tid=1277 视频直 ...
- 让姑姑不再划拳 码农也要有原则 : SOLID via C#
“姑娘,别这样.我们是有原则的.” “一个有原则的程序猿是不会写出 “摧毁地球” 这样的程序的,他们会写一个函数叫 “摧毁行星”而把地球当一个参数传进去.” “对,是时候和那些只会滚键盘的麻瓜不同了, ...
- CI Weekly #10 | 2017 DevOps 趋势预测
2016 年的最后几个工作日,我们对 flow.ci Android & iOS 项目做了一些优化与修复: iOS 镜像 cocoapods 版本更新: fir iOS上传插件时间问题修复: ...
- Oracle Database 12c Data Redaction介绍
什么是Data Redaction Data Redaction是Oracle Database 12c的高级安全选项之中的一个新功能,Oracle中国在介绍这个功能的时候,翻译为“数据编纂”,在EM ...
- IIC驱动移植在linux3.14.78上的实现和在linux2.6.29上实现对比(deep dive)
首先说明下为什么写这篇文章,网上有许多博客也是介绍I2C驱动在linux上移植的实现,但是笔者认为他们相当一部分没有分清所写的驱动时的驱动模型,是基于device tree, 还是基于传统的Platf ...
- 深入浅出JavaScript之原型链&继承
Javascript语言的继承机制,它没有"子类"和"父类"的概念,也没有"类"(class)和"实例"(instanc ...
- Kafka副本管理—— 为何去掉replica.lag.max.messages参数
今天查看Kafka 0.10.0的官方文档,发现了这样一句话:Configuration parameter replica.lag.max.messages was removed. Partiti ...
- 设计模式之单例模式(Singleton)
设计模式之单例模式(Singleton) 设计模式是前辈的一些经验总结之后的精髓,学习设计模式可以针对不同的问题给出更加优雅的解答 单例模式可分为俩种:懒汉模式和饿汉模式.俩种模式分别有不同的优势和缺 ...
- 用Kotlin创建第一个Android项目(KAD 01)
原文标题:Create your first Android project using Kotlin (KAD 01) 作者:Antonio Leiva 时间:Nov 21, 2016 原文链接:h ...