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,会自动选择最优的,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源码就能看到,也希望有大神能被我这块砖引出来根据源码扩展个更好的负载工具或者监控工具.

相关文章:

  • 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跨平台或扫描二维码关注


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/328388.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

在Tomcat配置JNDI数据源的三种方式

转载自 在Tomcat配置JNDI数据源的三种方式在我过去工作的过程中,开发用服务器一般都是Tomcat,数据源的配置往往都是在applicationContext.xml中配置一个dataSource的bean,然后在部署时再修改JNDI配置。我猜是因为Tomcat的配置需要改配置文件&#xff0…

毕业设计word 表格标题 图表标题

图一模一样 生成目录 ************************************************************************************************************************* 生成表目录和图目录 *********************************************************************************************…

php打印 二维数组,PHP中遍历二维数组_以不同形式的输出操作实例

//定义二维索引数组$arr array(array("101","李军","男","1976-02-20","95033"),array("103","陆君","男","1974-06-03","95031"),array("105","匡明&q…

Ubuntu 16.04下ASP.NET Core+ MySql + Dapper在 Jexus、nginx 下的简单测试

一、环境及工具 1、服务器 VirtualBox5.1.4 安装 Ubuntu Server 16.04 amd64MySql Ver 14.14 Distrib 5.6.21Jexus 5.8.1nginx 1.10.0dotnet core 1.0.0-preview2-003121supervisor 3.2.1 2、开发环境 VS2015 Update 3DotNetCore.1.0.0-VS2015Tools.Preview2.0.1.exe 3、测试工…

jsp九大隐藏对象

转载自 jsp九大隐藏对象jsp内置对象(隐藏对象):不加声明和创建就可以在jsp页面脚本中使用的成员对象。 内置对象类型作用域requestjavax.servlet.http.HttpServletRequestrequestresponsejavax.servlet.http.HttpS…

新闻发布项目——数据库脚本(直接导入即可)

数据库sql servel 2012版本,以下是脚本: USE [master] GO /****** Object: Database [newsDB] Script Date: 2016/11/24 19:48:46 ******/ CREATE DATABASE [newsDB]CONTAINMENT NONEON PRIMARY ( NAME NnewsDB, FILENAME NE:\第二期\第六本书使…

最新版Intellij IDEA视频教程 20170814

01课程介绍和软件安装.avi 02Intellij IDEA常用快捷键1132.avi 03Intellij IDEA安装Tomcat和Maven.avi 04Intellij IDEA使用Maven Helper插件分.avi 05Intellij IDEA中Git安装和使用.avi 06Intellij IDEA连接MySQL数据库.avi 07Intellij IDE使用GsonFormat转化json.avi …

Docker容器环境下ASP.NET Core Web API应用程序的调试

本文主要介绍通过Visual Studio 2015 Tools for Docker – Preview插件,在Docker容器环境下,对ASP.NET Core Web API应用程序进行调试。在自己做实验的过程中也碰到了一些问题,经过一些测试和搜索资料,基本解决了这些问题&#xf…

php 查看spl,PHP使用标准库spl实现的观察者模式示例

本文实例讲述了PHP使用标准库spl实现的观察者模式。分享给大家供大家参考,具体如下:前面使用纯php实现了一个观察者模式(php观察者模式), 现在使用php标准库spl在次实现观察者模式,好处是:随意的生成您想使用的观察者&…

深入体验JavaWeb开发内幕——简述JSP中的自定义标签叫你快速学会

转载自 深入体验JavaWeb开发内幕——简述JSP中的自定义标签叫你快速学会自定义标签,顾名思义,就是自己定义的标签。那么我们为什么要自己定义一些标签呢? 我们知道,如果要在JSP中获取数据我们可以采用通过JSP的隐式对象request来…

ps查看所有php进程,ps命令就是最基本进程查看命令

1、ps是什么?要对进程进行监测和控制,首先必须要了解当前进程的情况,也就是需要查看当前进程,ps命令就是最基本进程查看命令。使用该命令可以确定有哪些进程正在运行和运行的状态、进程是否结束、进程有没有僵尸、哪些进程占用了过多的资源等…

如何测试微信应用号

每一次微信的动作都是商机,而随着微信应用号的即将面世,微信应用号的开发和测试又会成为一股新的风向。 其实经常有人问到微信服务号或者微信订阅号怎么测试的相关内容,可能总觉得比较缺乏技术含量不太想说,这次看了下应用号&…

git 拉代码

git clone 。。 拉取代码master git clone -b 分支名 。。。 拉取分支名 git——更新分支、提交代码、切换分支、合并分支 还是直接贴教程吧:https://git-scm.com/book/zh/v2 如何把本地idea上的项目上传到github上:https://www.cnblogs.com/…

javaweb学习总结(二十四)——jsp传统标签开发

转载自 javaweb学习总结(二十四)——jsp传统标签开发一、标签技术的API 1.1、标签技术的API类继承关系二、标签API简单介绍 2.1、JspTag接口JspTag接口是所有自定义标签的父接口,它是JSP2.0中新定义的一个标记接口,没有任何属性和方法。JspTag接口有Tag…

二级导航 sql php,帝国cms栏目导航调用之SQL语句调用一级栏目和二级栏目的方法...

帝国cms调用一级栏目及下面的二级栏目调用方法如下&#xff1a;SQL语句<?php $ecms_bq_sqlsys_ReturnEcmsLoopBq("select * from [!db.pre!]enewsclass where bclassid0 order by myorder limit 6",14,24,0);$bqno0;while($bqr$empire->fetch($ecms_bq_sql)){…

Java开发利器:IntelliJ IDEA的安装、配置与使用

1.尚硅谷-IDEA-IntelliJ IDEA的介绍和优势 2.尚硅谷-IDEA-版本介绍与安装前的准备 3.尚硅谷-IDEA-IDEA的卸载 4.尚硅谷-IDEA-IDEA的安装 5.尚硅谷-IDEA-安装目录和设置目录结构的说明 6.尚硅谷-IDEA-启动IDEA并执行HelloWorld 7.尚硅谷-IDEA-Module的使用 8.尚硅谷-IDEA…

开发者的利器:Docker 理解与使用

困扰写代码的机器难免会被我们安装上各种各样的开发工具、语言运行环境和引用库等一大堆的东西&#xff0c;长久以来不仅机器乱七八糟&#xff0c;而且有些相同的软件还有可能会安装不同的版本&#xff0c;这样又会导致一个项目正常运行了&#xff0c;却不小心破坏了另一个项目…

php环境搭建sqlserver,ThinkPHP5.0/5.1对接SQLServer数据库(宝塔环境)

SQLServer实际上是mssql&#xff0c;想要使用thinkphp的Db对象操作数据库前必须要在服务器上安装对应的扩展。宝塔面板的PHP安装路径为/www/server/php/ 且支持多个PHP版本共存&#xff0c;所以安装PHP扩展的方法与网上那些示例略有不同。下面是 PHP7.2 安装 pdo_sqlsrv5.6.0 扩…

<c:set>标签

转载自 <c:set> 标签 JSP 标准标签库 <c:set>标签用于设置变量值和对象属性。 <c:set>标签就是<jsp:setProperty>行为标签的孪生兄弟。 这个标签之所以很有用呢&#xff0c;是因为它会计算表达式的值&#xff0c;然后使用计算结果来设置 JavaBean 对…

layUI 日期组件单独使用 并且放大

日期类型 选择 layuI 的date 类型单独使用 <!DOCTYPE html> <html> <head><meta charset"utf-8"><title>layDate快速使用</title><link rel"stylesheet" href"/layui/css/layui.css" media"all…