加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > Linux > 正文

linux上的C#服务器可扩展性问题

发布时间:2020-12-13 17:25:31 所属栏目:Linux 来源:网络整理
导读:我在Visual Studio 2010和Mono Develop 2.8上开发了一个C#服务器. .NET Framework 4.0 看起来这个服务器在Windows上比在Linux上表现得更好(在可扩展性方面). 我测试了本机Windows(12个物理内核)上的服务器可扩展性,以及使用Apache的ab工具的8和12核心Windows
我在Visual Studio 2010和Mono Develop 2.8上开发了一个C#服务器. .NET Framework 4.0

看起来这个服务器在Windows上比在Linux上表现得更好(在可扩展性方面).
我测试了本机Windows(12个物理内核)上的服务器可扩展性,以及使用Apache的ab工具的8和12核心Windows和Ubuntu虚拟机.

窗口响应时间几乎平淡.并发级别接近/克服核心数时,它开始接收.

由于某些原因,linux响应时间更糟.从并发的5级开始,它们呈线性增长.还有8个和12个内核,Linux VM的行为类似.

所以我的问题是:为什么在linux上表现更糟? (和我如何解决?).

请看附图,它显示了作为请求并发功能(范围栏设置为50%和100%)的75%请求的平均时间.

我有一种感觉,这可能是由于mono的垃圾收集器.我试着玩GC设置,但我没有成功.任何建议?

一些额外的背景信息:服务器基于HTTP侦听器,可以快速解析请求并将其排队在线程池上.线程池通过一些密集的数学(在?10秒内计算答案)来处理这些请求.

解决方法

你需要隔离问题的第一位.首先通过使用 HeapShot监控内存使用情况.如果不是内存,那么请为您的代码配置文件,以确定耗时的方法.

此页面,Performance Tips: Writing better performing .NET and Mono applications包含一些有用的信息,包括使用单分析器.

过多的字符串操作和Boxing通常是“隐藏”的代码不可扩展的祸害.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读