• Mono 3.2.3 Socket功能迎来一稳定的版本


    由于兴趣自己业余时间一直在搞.net下面的通讯应用,mono的存在得以让.NET程序轻松运行在Linux之下.不过经过多尝试Socket相关功能在Mono下的表现并不理想.不管性能还是吞吐能力方面离我想要的有比较大的差距.最后一次在2.10.x下测试情况下也比失望,主要是在连接数多数据交互量大的情况下会导致异步send操作虽然成功但会存在数据发送不出去的情况,这情况在应用中显然是不允许发生的;虽然发送可以用同步解决,但连接多的情况同步显然容易导致其他连接处理上存在延时,最终打消了在Mono做通讯的想法.

    最近Mono发布了新的版3.2.3看了一下感觉不错,顺便也下载了mono的源代码下来看了一下

    // Actual send() done in the runtime
    				if (result.error == 0) {
    					UpdateSendValues (result.Total);
    					if (result.Sock.disposed) {
    						result.Complete ();
    						return;
    					}
    
    					if (result.Size > 0) {
    						Socket.socket_pool_queue (Worker.Dispatcher, result);
    						return; // Have to finish writing everything. See bug #74475.
    					}
    					result.Total = send_so_far;
    					send_so_far = 0;
    				}
    				result.Complete ();

    发现早期版本SocketAsyncEventArgs存在发送不完整需要自己处理的情况在现有版本代码已经解决,于是就又提起对mono的兴趣.

    这次装了mono 3.2.3进行了一个简单的持久压力测试,的确之前碰到有个别情况数据没发送出去的问题已经解决了.虽然性能和WINDOWS下比起来还有段距离,不过总的来说还可以接受.以下是测试截图.

    测试大概是在1K个连接的基础上进行了大概2亿次的数据交互,每秒的请求交互量大概在1w左右. 测试服务端配置:

    cpu:一个核的虚机
    操作系统:Centos 6.5 64
    内存:1G
    mono 3.2.3

    在整个测试过程CPU大概占用了60-70之间.从测试结果来看,mono这版的socket处理能力还算可以接受的,希望mono团队在下个版本做得更出色.

  • 相关阅读:
    图书 "ERP理论 方法与实践" 目录
    能为农村的家乡做些什么
    利用 wz_jsgraphics.js 画线
    在WebService中使用简单的自定义SoapHeader
    VS2005 自带的 DHTML 参考
    GridView控件 Image控件 与图片的二进制数据库存储和显示
    js 图片 拖动 复制
    [文摘20070706]国内外IT相关知名的企业或组织
    操作Word模板文件.dot 结合具体数据 生成Word文档 .doc
    Android:如何显示网络图片(转)
  • 原文地址:https://www.cnblogs.com/smark/p/3417822.html
Copyright © 2020-2023  润新知