【问题标题】:Using .NET/Mono on Linux to serve a high volume web service, a good idea?在 Linux 上使用 .NET/Mono 来提供大量 Web 服务,这是个好主意吗?
【发布时间】:2010-09-01 15:34:52
【问题描述】:

我们有一项网络服务,该服务的流量相当大,可帮助您根据收到的电子邮件确定您的首选联系人。

该服务最初是在 C# /.NET 中实现的,目的是利用我们已经在 Windows 主机上运行的一些代码。该服务不使用 ASP.NET,但它是一个简单的 C# 服务,使用来自 .NET 的基本 HTTP 侦听器。

服务执行正常,但偶尔 MONO 会完全阻塞并停止响应任何请求。性能还可以,但不是很好,这表明我们花费了大量时间来弄清楚 MONO CLR 和 Windows CLR 之间的区别。我必须承认,我来自 Java 背景,似乎服务器端的生态系统在 Java 端比 Linux 上的 MONO 生态系统大得多。

所以现在,我正在寻找有关在 Linux 上使用 Mono 来提供高流量 Web 服务的示例和个人经验。

【问题讨论】:

  • 您可能想要定义“高音量”。您是在说每天数百个请求吗?数千?百万?
  • 每个集群每天 4 到 5 百万个请求。我们已经有一个分片机制来将我们的用户群分成不同的集群。但目标是每个集群每天处理 4 到 5 百万个请求。

标签: c# linux mono


【解决方案1】:

不知道它是否有助于解决您的问题,但您可以尝试在mono 2.8 上运行您的网络服务,new garbage collector 附带。

【讨论】:

  • 好建议,我们现在使用的是 2.6.4。 2.8一般是什么状态。这里没有提到:mono-project.com/DistroPackages/Ubuntu.
  • 如果您想拥有最先进的 Mono 版本,我建议您使用带有直接从 Novell (go-mono.com/mono-downloads/download.html) 获得的软件包的操作系统或从源代码构建 (mono-project.com/Parallel_Mono_Environments)。
  • 2.8 版应该很快就会发布(几天或几周)。我有来自 git 源的单声道构建(8 月 30 日下载),单声道运行时版本是 2.8.1。如果您使用的是 Ubuntu,那么您的最佳选择可能是并行单声道环境或从每日 tarball 包构建它。
【解决方案2】:

对于大批量性能调优,您通常需要同时考虑以下几部分

  • 操作系统设置(特定于 TCP/IP)
  • Web 服务器级别设置
  • 框架级别设置(特定于单声道)

就像@yojimbo87 所描述的那样,使用最新的 Mono 构建可以帮助从框架级别提升性能。但是您还需要了解操作系统和 Web 服务器,看看是否还有其他调优方法。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-06-29
    • 1970-01-01
    • 2016-02-24
    • 1970-01-01
    • 2011-03-31
    • 2011-08-14
    相关资源
    最近更新 更多