我们使用单声道版本 3.10.0(来自 $mono --version)和 Nginx(1.6.2)和 mono-fastcgi-server4 来托管在 Debian jessie linux(ARM - Raspberry Pi)上运行的 ASP.Net MVC3 Web 应用程序)。
基本上我们似乎遇到了与这个问题中描述的相同的问题: Huge delay on first browser-request to Mono XSP hosting web-application
当来自浏览器/网站访问者的第一个请求发出时,mono-fastcgi-server 使用所有 CPU 最多可以得到 120 秒,直到网页显示在 webbrowser 中。这发生在每次启动/重新启动网络服务器之后。
据我所知,如果您在 Windows 服务器上使用 IIS 托管您的网站,这很正常,甚至相同。主要区别在于Windows服务器要快得多......
为了尽量减少启动时间,这是我已经尝试过的:
使用 Visual Studio 中的“发布网站”功能将我的 razor 视图预编译为 dll。到目前为止,这有效,但似乎并没有显着减少启动时间。
我遇到的下一件事是AOTing(提前编译)我在 bin 文件夹中的 dll(请参阅http://www.mono-project.com/docs/advanced/runtime/docs/aot/)我使用了 'mono -- aot file.dll` 来预编译我的程序集。再次没有性能提升。
然后我发现您当然也可以使用以下命令 AOT 您系统上的所有库(可在此处找到:http ://www.mono-project.com/docs/advanced/aot/):
mono --aot /usr/lib/mono/1.0/mscorlib.dll for i in /usr/lib/mono/gac/*/*/*.dll; do mono --aot $i; done
这在可能的覆盆子上花了很长时间,但 - 再次 - 相同的结果。
我做错了什么或遗漏了一些明显的东西吗?
前面提到的问题的作者在他关于延迟的最后评论中说:
它是由生成和编译尚未预编译的剃刀视图引起的。这些文件被编译到 /tmp/... 中,该文件映射到嵌入式设备上的内存,因此在重新启动后会丢失。更糟糕的是,每次重新启动 XSP 网络服务器后,文件都会被编译到 /tmp 的新子目录中。这样每次启动 XSP 时都会重新编译 razor 视图。
我认为无论使用 XSP4、mono-fastcgi-server 以及在使用 Apache 时可能还有 mod-mono,它似乎对我来说都是一样的。(这并不奇怪,因为我认为它们都是基于 XSP 的——但也许我错了......)
现在提到的问题来自 2011 年......有人知道是否有解决方案让网络服务器使用这些预编译文件?
我很感谢任何提示!