【问题标题】:mod_mono: Random CompilationException errorsmod_mono:随机 CompilationException 错误
【发布时间】:2012-02-16 03:04:49
【问题描述】:

服务器重新启动后,我有时会收到类似这样的随机 CompilationException 错误:

CompilationException: CS0006: Metadata file `/tmp/apache-temp-aspnet-0/ca373c84/assembly/shadow/10cad1cb/02cb7ade_1201ab15_00000001/ZedGraph.dll' could not be found -> HttpException: Single file build failed

并且您无法访问该应用程序。如果我再次重新启动服务器,那么问题就会消失。

触发错误的文件可以是我自己的 dll 或依赖项之一,例如 mysql.dll。

我在 Linode VPS 上使用 mono 2.10.2、CentOS 版本 5.7(最终版)、Apache 和 mod_mono。

知道可能是什么原因吗?

编辑:自从我搬到 Linode 并且他们使用 XEN 时我的麻烦就开始了,我发现 --with-xen_opt=yes 选项看起来很有希望: http://mono-project.com/Advanced_Mono_Compile_Options

【问题讨论】:

  • 你说的随机,是不是你的应用随机重启,导致这个编译错误?还是 mod_mono 启动应用程序时出现初始编译错误?
  • mod_mono 在我认为的 n 个请求后自动重启应用程序,而且我还有一个 cron 任务,当它没有响应时自动重启 apache。
  • 值得您尝试更新的单声道版本吗? 2.10.8?
  • 我会尽快部署软件包,因为我想保留官方的 yum 安装。
  • 我从 .net2 更新到 .net4,但仍然出现随机错误。

标签: asp.net mono centos vps mod-mono


【解决方案1】:

听起来像是影子复制和编译的错误(竞争条件?)。之前已经找到并修复了其他...见http://grendello.blogspot.com/2007/08/new-modmono-and-xsp-developments.html

这是2006年类似问题的报告http://lists.ximian.com/pipermail/mono-list/2006-March/030970.html

您可以尝试重新启动apache,而不是重新启动系统。请注意,我发现它可以帮助停止 apache 然后启动,而不是重新启动。

您还可以启用 mod_mono 控制面板并从那里重新启动应用程序。在 apache 配置中添加这个。

<Location /monocp>
  SetHandler mono-ctrl
  Order deny,allow
  Deny from all
  Allow from 127.0.0.1 <YOURIP>
</Location>

要自动执行此过程,请查看 Monit

【讨论】:

  • 这就是我现在所做的,我每分钟创建一个 cron 任务来检查它是否正在运行,如果没有,则重新启动 apache。问题是有时 Web 应用程序只有一个部分失败,其余部分工作正常。
【解决方案2】:

FWIW,我在没有虚拟化的专用服务器(8 核 i7,x86 Ubuntu 服务器版)上遇到了完全相同的问题,所以我不认为这是由 Xen 引起的问题。对于 OP (SCL) 或遇到此问题的任何其他人,我已在另一篇 SO 帖子 here 中记录了我的工作,并已向 Mono/Xamarin 提交了错误报告。

这似乎是一种竞争条件,但与虚拟化无关。

【讨论】:

  • 非常有趣。自从我搬到专用服务器后,我再也没有看到这个问题,但既然你有它们,我将改变接受的答案。谢谢你的信息。
  • 竞争条件更有可能发生在负载更大的系统上。由于 VPS 正在共享资源,这可以解释为什么它似乎是一个虚拟化问题,但其他拥有专用硬件(可能处于高负载下)的人仍然会遇到这个问题。
【解决方案3】:

似乎是由 XEN 虚拟化和单声道预编译二进制文件引起的问题。我使用选项 --with-xen_opt=yes 编译了单声道,但我无法编译 XSP,所以我无法测试是否确实解决了它,但我将完全相同的应用程序移至专用服务器并在 200 万次请求后我没有遇到任何错误。

更新:检查 Mahmoud 答案

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-06-14
    • 2016-05-23
    • 2011-07-18
    • 1970-01-01
    相关资源
    最近更新 更多