在生产环境下,MONO与.NET Framework的性能差别。

      上个月公司项目需要,在腾讯社区开放平台部署了基于mono的腾讯校友应用“公务员考试”。经过一周的观察,发现问题非常大。

      我们来看mono在腾讯服务器上的CPU报表。

      2月18日到2月24日的平均值在70.91%。而2月23日-3月1日平均值在76.61%。占用的CPU非常高。

      另一份基本相同的代码部署在Windows服务器上,我们看这台服务器的CPU使用率。

      这台服务器除了这个项目外,还负载了其它的Web项目。从报表反映的情况来看,运行状态非常健康。

      这两台服务器的配置分别是:

       Tencent:CPU-Xeon E5506*2(2.13GHZ),内存-7G,OS-Linux 2.6(suse),MONO2.8.2

       Windows:CPU-Xeon E5420*4(2.50GHZ),内存-4G,OS-Windows Server 2003,.NET Framework。

      在服务器的配置上没有办法做直接的对比,附上Windows服务器,只是想从一个侧面来说明项目代码并不复杂,系统需要处理的计划量并不多。

      在访问用户数不高的情况下,单是MONO的守护进程就占用了75.0%的CPU。

      生产环境上是用Apache+mod_mono来做WEB站的,总的来看,对于WEB负载,MONO的情况并不理想。

已有 11 条评论

  1. Pingback 引用通告:木子博客

  2. supercyc 说:

    请问一下,这个cpu报表是用什么软件得出的?

    • 木子 说:

      腾讯的报表是她们提供的,我们自己的报表是一个开源工具,网络流量监测图形分析工具 Cacti http://www.cacti.net/

  3. wsky 说:

    汗 为什么守护进程占用了那么高的CPU呢,有点不正常

    • 木子 说:

      嗯,非常不正常~~~指导下怎么搞?

  4. Tt 说:

    个人认为,MONO就是山寨的.NET。我的建议是趁早放弃MONO
    我相信,MONO的开发人员+测试人员的素质和数量都不能和Microsoft比的,问题多多。
    原来腾讯对.NET的解决方案就是MONO啊?挺失望的。

  5. goosns.com 说:

    你默认的mono配置没有优化好。 所以占用的cpu高。
    http://hi.baidu.com/xc_hai/

  6. bobo 说:

    我比较郁闷 最近用c#写了个服务端程序 然后部署在Linux上 Mono占用内存非常的高 200个客户端尽然占用到 近500MB内存 我在windows下测试 才占用20MB内存…Mono 真让人很失望啊 都打算用java改写了…这样的性能让我真的无法接受啊

  7. goosns.com 说:

    不要用默认的mono模式启用,用mono-sgen(垃圾回收模式)启动,性能会有很大提升。你默认的mono配置没有优化好。 所以占用的cpu高。
    你可看下我的:http://hi.baidu.com/xc_hai/ 数据。

    • 木子 说:

      试了mono-sgen也一样存在性能问题。不过也发现了一个问题,在x86_64的CPU上,mono源码编码出来显示的是amd64的架构,这里面可能有问题,正在验证。

  8. haifeifei 说:

    ==原创,免费 贡献==

    不要纠结这个 日活跃用户1万人 ,运行在国外小国家一年多不错了。
    http://hi.baidu.com/xc_hai/blog/item/554aa1dc7a6c5dc28c1029c7.html
    CentOS 5.5 搭建 mono2.10.2 【生产实践完整版, 日活跃用户1万人以上】 有性能截图。

    http://hi.baidu.com/xc_hai/blog/item/0b36d82d65e89ff78b13995e.html
    [http-mono进程守护sh脚本]

发表评论

*

:wink: :-| :-x :twisted: :) 8-O :( :roll: :-P :oops: :-o :mrgreen: :lol: :idea: :-D :evil: :cry: 8) :arrow: :-? :?: :!: