【问题标题】:performance of accessing a mono server application via remoting通过远程访问单服务器应用程序的性能
【发布时间】:2008-09-23 09:44:08
【问题描述】:

这是我的设置:我为本地客户端机器编写了一个 .NET 应用程序,它实现了一个也可以在网页上使用的功能。为了使这个例子简单,假设客户安装了一个软件,他可以在其中输入一些数据并取回一些数据。

我们的想法是创建一个网页,该网页包含一个表单,用户在该表单中输入相同的数据并获得与上述相同的结果。由于公司有可用的网络服务器,最初的想法是创建一个单一的网络服务,但由于未知原因而被驳回。 “服务”不应作为 Web 服务运行,而应由 PHP 脚本调用。目前这是通过 PHP 中的 shell_exec 调用 mono 应用来实现的。

所以现在我被我的应用程序的单端口卡住了,它运行良好,但执行时间太长。我已经删除了所有不必要的 dll、方法等,但是通过命令行调用应用程序 - 通过命令行参数提交所需的数据 - 大约需要 700 毫秒。我们预计每秒大约 10 次点击,因此这仅在为此任务设置大量服务器时才有效。

我假设700m与每次启动应用程序的成本有关,因为如果我只处理请求一次或五百次(我取原始输入,改变它),它在时间方面并没有太大区别每次使用“新”数据进行 500 次迭代。从第二次迭代开始,处理时间下降到每次迭代大约 1 毫秒)

我的下一个想法是将单声道应用程序设置为远程服务器,这样它只需启动一次,然后就可以处理传入的请求。因此,我编写了另一个作为客户端的单声道应用程序。调用客户端,让客户端将数据传递给服务器并检索结果现在需要 344 毫秒。这更好,但仍然比我预期的要慢。

然后,我基于this blog post 从头开始​​实施了一个新项目,但遇到了同样的性能问题。

问题是:我是否遗漏了与可以提高客户端/服务器速度的单一项目相关的内容?尽管为此任务创建 Web 服务的想法被打消了,但 Web 服务在这种情况下会表现得更好(因为我不需要客户端应用程序调用该服务),尽管据说远程处理比 Web 服务更快?


我本可以更清楚地说明这一点,但目前还不能实现 Web 服务(请不要问为什么,我没有写要求;))

同时我检查了它确实是客户端的启动,这在远程处理场景中花费了大部分时间。

我可以想象从命令行通过管道访问服务器,这非常适合我的场景。我想这将使用套接字来完成?

【问题讨论】:

    标签: performance mono


    【解决方案1】:

    您可以尝试使用 AOT 来减少启动时间。在 .NET 上,您将使用 ngen 来实现该目的,在 mono 上,只需对应用程序使用的所有程序集执行 mono --aot。

    AOT 代码比 JIT 代码慢,但具有减少启动时间的优势。

    您甚至可以尝试使用 AOT 框架程序集,例如 mscorlib 和 System。

    【讨论】:

      【解决方案2】:

      我认为在这种情况下使用远程处理并不是一个理想的选择。但是,您在服务器上安装单声道而不是每次都启动它的想法确实很可靠。

      您是否考虑过通过 HTTP 使用 SOAP Web 服务?这也将帮助您处理“网页”场景。

      即使以我的经验对您来说有点慢,自定义 RESTful 服务实现也比远程处理更容易使用。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-11-26
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多