上个月公司项目需要,在腾讯社区开放平台部署了基于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的情况并不理想。
Pingback 引用通告:木子博客
请问一下,这个cpu报表是用什么软件得出的?
腾讯的报表是她们提供的,我们自己的报表是一个开源工具,网络流量监测图形分析工具 Cacti http://www.cacti.net/
汗 为什么守护进程占用了那么高的CPU呢,有点不正常
嗯,非常不正常~~~指导下怎么搞?
个人认为,MONO就是山寨的.NET。我的建议是趁早放弃MONO
我相信,MONO的开发人员+测试人员的素质和数量都不能和Microsoft比的,问题多多。
原来腾讯对.NET的解决方案就是MONO啊?挺失望的。
你默认的mono配置没有优化好。 所以占用的cpu高。
http://hi.baidu.com/xc_hai/
我比较郁闷 最近用c#写了个服务端程序 然后部署在Linux上 Mono占用内存非常的高 200个客户端尽然占用到 近500MB内存 我在windows下测试 才占用20MB内存…Mono 真让人很失望啊 都打算用java改写了…这样的性能让我真的无法接受啊
不要用默认的mono模式启用,用mono-sgen(垃圾回收模式)启动,性能会有很大提升。你默认的mono配置没有优化好。 所以占用的cpu高。
你可看下我的:http://hi.baidu.com/xc_hai/ 数据。
试了mono-sgen也一样存在性能问题。不过也发现了一个问题,在x86_64的CPU上,mono源码编码出来显示的是amd64的架构,这里面可能有问题,正在验证。
==原创,免费 贡献==
不要纠结这个 日活跃用户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脚本]