4

我们正在使用 Mono (2.10) XSP4 网络服务器来托管在开放式嵌入式 Linux (ARM) 上运行的 ASP.Net MVC3 Web 应用程序。启动 XSP4 时,它需要几秒钟才能准备好并接受请求。到目前为止没有问题。

但是,当来自浏览器/网站访问者的第一个请求发出时,XSP4 会使用所有 CPU 大约 55 秒,直到网页(成功)显示在 webbrowser 中。这发生在每次启动/重新启动 XSP 之后。

我的第一个想法是,这是整个 Web 应用程序的即时编译。因此,我构建了一个仅包含二进制文件、.css、.js 和视图 (.cshtml) 的部署包。它起作用了,但仍然有很大的延迟。

然后我尝试使用 Visual Studio 预编译该 Web 应用程序(如某些 Mono 发行说明中所述)。该网站再次运行良好,但仍然存在巨大的延迟。

一些真正在我脑海中的问题:

  1. 当第一个浏览器请求进来时,有人知道 XSP 网络服务器在做什么吗?即使它是预编译的 Web 应用程序,这是否也是即时编译?
  2. 为什么每次重新开始后都会这样做?
  3. 通常可以以某种方式减少巨大的延迟吗?
  4. 是否可以减少巨大的延迟,使其仅在 Web 应用程序更新后的第一个浏览器请求上完成(在 XSP 的后续运行之间缓存)?

任何帮助/想法都会很棒。

更新:与此同时,我发现延迟是由 Mono / ASP.Net 编译器 dcms 构建并将 MVC3 razor 视图编译到 /tmp/root-aspnet.../ 中造成的,该视图映射到内存,因此不是持久的。我现在正在寻找一种方法来控制 XSP4 / Mono.WebServer / Mono-Asp.Net 存储这些编译文件的位置。如果有人熟悉这个,请告诉我;-)

4

2 回答 2

1

这可能是本机编译开销(与预编译不同)。您可以检查AOTing 系统库是否可以加快速度:

mono --aot /usr/lib/mono/1.0/mscorlib.dll
for i in /usr/lib/mono/gac/*/*/*.dll; do mono --aot $i; done
于 2011-11-16T13:13:40.997 回答
0

为防止每次 XSP4 启动时树莓派都编译您的网站,您必须使用aspnet_compiler.exe位于%WINDIR%\Microsoft.NET\Framework\v4.0.30319文件夹中的 和 预编译您的网站。

这是一个例子:

aspnet_compiler.exe -p "d:\original website" -v / -c "d:\compiled website"

编译您的网站后,将其上传到您的 raspberry,XSP/mono 将使用您网站的编译版本。您的第一个请求会快得多。

这里有几个参考链接:

预编译您的网站 (C#)

ASP.NET 编译工具 (Aspnet_compiler.exe)

于 2018-04-11T18:12:04.650 回答