在有些场中存在着大量的消息广播转发,为了了解.net socket tcp在这方面的性能表现,所以做了一个比较极端信息广播转发强度测试.测试场景是以400个连接信息相互广播为测试用例就是当其中一个连接发送消息到服务端就会转发到其他连接上,测试情况分别是每个连接每秒广播2,5和10次,其服务器每秒的信息转发量分别320000,800000和1600000.

测试的硬件分别是一台win2008服务器,1台WIN2003和两个vm win2003.测试交互的消息如下:

class Po : IMessage{public int ID;public short X;public short Y;public short Type;public void Load(BufferReader reader){ID = reader.ReadInt32();X = reader.ReadInt16();Y = reader.ReadInt16();Type = reader.ReadInt16();}public void Save(BufferWriter writer){writer.Write(ID);writer.Write(X);writer.Write(Y);writer.Write(Type);}}

以上消息写入流的大小是18个byte,由于在之前的测试中使用的是100mb交换,所以大概跑到50w左右的消息量基本就跑满了,最近刚换上了1000mb交换所以重新进一个密集交互测试.

每秒发两次的结果

每秒发5次的结果

每秒发10次的结果

总结

从最终的测试结果来看即使每秒转发到到1600000消息,cpu和内在的使用率都还是很低的,从测试程序的日志输出来看每秒大概使用了27000个IO来处理这1百多W的消息转发,简单地算一下大概每个IO处理了50多个消息.由于IO资源的缺少在面对这情况下也必须这样做,即使千兆的交换机其pps也只通达到1488000因此到系统软件层面就更不用谈了.虽然使用了合并处理转发数据,但延时控制还是很理想即使服务器的转发量达到每秒1600000消息,但每个消息到达client还是可以控制到20ms内.

从服务器的资源来看其实还可以做更极端的压力测试,可是client不给力因为整个测试过程包括协议分析,对象写入流和流解释成对象,由于服务端一个对象分发到N个连接也只是序列化一次,所以损耗并不高.但对于client就不一样,每次接收一个消息都需反序列成对象.对于配置不高的client来说每秒要处理接近百W的消息分析和反序列完全应付不过来,如果以后有更好的机器会再详细测一次.

相信看完这个测试的朋友应用对.net socket有更深入的了解,同样.net socket在iocp的支持下其性能也是很出色的.

Socket Tcp高密集信息广播转发强度测试相关推荐

  1. 【Java 网络编程】Socket TCP UDP 联系

    文章目录 I 信息传输关注点 II Socket 与 TCP UDP 关系 III Socket 连接组成 ( IP地址 + 端口号 ) IV Socket TCP V Socket UDP VI C ...

  2. 基于 IOCP 的通用异步 Windows Socket TCP 高性能服务端组件的设计与实现

    设计概述 服务端通信组件的设计是一项非常严谨的工作,其中性能.伸缩性和稳定性是必须考虑的硬性质量指标,若要把组件设计为通用组件提供给多种已知或未知的上层应用使用,则设计的难度更会大大增加,通用性.可用 ...

  3. 程序猿修仙之路--数据结构之你是否真的懂数组? c#socket TCP同步网络通信 用lambda表达式树替代反射 ASP.NET MVC如何做一个简单的非法登录拦截...

    程序猿修仙之路--数据结构之你是否真的懂数组? 数据结构 但凡IT江湖侠士,算法与数据结构为必修之课.早有前辈已经明确指出:程序=算法+数据结构  .要想在之后的江湖历练中通关,数据结构必不可少.数据 ...

  4. 通用异步 Windows Socket TCP 客户端组件的设计与实现

    编写 Windows Socket TCP 客户端其实并不困难,Windows 提供了6种 I/O 通信模型供大家选择.但本座看过很多客户端程序都把 Socket 通信和业务逻辑混在一起,剪不断理还乱 ...

  5. 分布式消息总线,基于.NET Socket Tcp的发布-订阅框架之离线支持,附代码下载

    一.分布式消息总线以及基于Socket的实现 在前面的分享一个分布式消息总线,基于.NET Socket Tcp的发布-订阅框架,附代码下载一文之中给大家分享和介绍了一个极其简单也非常容易上的基于.N ...

  6. codeblock socket 编译错误_从Linux源码看Socket(TCP)Client端的Connect

    从Linux源码看Socket(TCP)Client端的Connect 前言 笔者一直觉得如果能知道从应用到框架再到操作系统的每一处代码,是一件Exciting的事情. 今天笔者就来从Linux源码的 ...

  7. c#中的socket(tcp)

    实只要用到Socket联接,基本上就得使用Thread,是交叉使用的. C#封装的Socket用法基本上不算很复杂,只是不知道托管之后的Socket有没有其他性能或者安全上的问题. 在C#里面能找到的 ...

  8. 蒙纳士大学提出高效建模高低频信息的LITv2,在性能、FLOPs、吞吐量和显存消耗方面均优于现有Transformer结构!...

    关注公众号,发现CV技术之美 本文分享论文『Fast Vision Transformers with HiLo Attention』,由蒙纳士大学提出能够高效建模高低频信息的LITv2,在性能.FL ...

  9. Omorn - NJ301-1100 AND NX102-9000 - Socket - TCP 通讯

    目录 Omorn - NJ301-1100 AND NX102-9000 - Socket - TCP 通讯 测试案例IP 通讯验证 Omorn - NJ301-1100 AND NX102-9000 ...

  10. 瀚高数据库DML自动转发功能介绍(数据库层面)

    瀚高数据库 目录 文档用途 详细信息 文档用途 本文用于介绍瀚高在数据库层面开发的数据库转发功能,通过示例演示DML自动转发功能. 详细信息 一.功能介绍 为了向应用程序提供多主服务,瀚高数据库开发s ...

最新文章

  1. 大幅提高生产力:你需要了解的十大Jupyter Lab插件
  2. 探索“植物人”语言能力和意识水平
  3. Elasticsearch: too many open files
  4. 一文理清Cookie、Session、Token
  5. js_!和!!的使用
  6. RhinoMock入门(4)——次序和委托
  7. 使用freetype来显示中文汉字和英文字符
  8. 高校计算机成绩管理系统开题报告,高校科研管理系统_高校科研管理系统开题报告...
  9. HMI智能座舱自动化测试软件
  10. Java基本sql_SQL基本语句
  11. 特殊命令之REG命令
  12. 考研高等数学公式总结(三)
  13. 【实用技巧】如何截取网页长图
  14. 英文字母字符简便替换法
  15. chrome主页被篡改后缀为?tn=49055317_4_hao_pg
  16. 2021-07-01 Leetcode题解:545,915,1647,722
  17. 解决:Consider renaming one of the beans or enabling overriding by setting spring.main.allow-bean-defin
  18. 移动安全:APK的基础结构
  19. PyEcharts 基本图表之日历图
  20. 什么是Java语言?java语言简介

热门文章

  1. php上传文件 按日期文件夹,fckeditor上传文件按日期存放及重命名方法
  2. java分布式_学习分布式无从入手?阿里Java架构师分享分布式架构必读书籍
  3. [python]练习之判断3个数值中最大值
  4. SVN版本管理:两种开发模式
  5. 使用Ant打包java程序
  6. 解决问题“Parsing Data for android-23 failed Unsupported major.minor version 51.0”
  7. Cache满载的LRU置换
  8. ApacheBench~网站性能测试工具
  9. Redisson 配置
  10. 计算机辅助英语教学电子版,计算机辅助英语教学探究.pdf