MONO 4.6.2服务器上的高CPU使用率

时间:2017-02-04 16:01:15

标签: c# ubuntu mono apache2 ubuntu-16.04

我更新了我的:

  • Ubuntu 服务器 16.04.1 LTS
  • MONO v4.6.2

...来自官方存储库。

自更新以来,网站仍然运行良好,但大约一两天后,一些MONO流程发疯,并 100% CPU 。我有不同的网站;主要是简单的HTML,只需要一些代码。它随机发生,每次都在不同的网站上。这完全是随机的。

然后我收到一封高CPU使用率的电子邮件提醒,通过SSH连接,键入" htop",并终止该过程并恢复正常......一两天。

这绝对看起来像这个版本的MONO中的一个错误。有什么办法解决吗?还有其他人有这个问题吗?或者也许我应该切换到一个没有这种腐败的不同版本?

由于

编辑:2天后, EVERY MONO进程占用了整个CPU。

查看Apache2日志文件,我发现这与MONO

有关
WARNING: WebConfigurationManager's LRUcache evictions count reached its max size
Cache Size: 100 (overridable via MONO_ASPNET_WEBCONFIG_CACHESIZE)

此外,"服务apache2重启"没有解决问题。我必须手动终止进程,或重启。

2 个答案:

答案 0 :(得分:1)

我玩过各种各样的MONO版本,输入“service apache2 reload”来重现高CPU使用率问题。

在MONO 4.8中,似乎发生的事情似乎不那么频繁,但问题仍然存在。

在MONO 4.2.3.4中,问题也存在。

在Ubuntu上默认出现的MONO 4.2.1中,不会发生此问题。

对于.NET Core,有些人尝试过它,并强烈建议我在它变得更稳定之前避免它。

所以现在,唯一的解决方案是坚持使用MONO 4.2.1

这也证实这与MONO有关,而与我的代码或服务器配置无关。

答案 1 :(得分:1)

尝试所有选项后,似乎MONO与使用mod_mono的Apache2无法正常工作。我找到的唯一解决方案是将Apache2从prefork切换到worker模式,其中MONO服务器需要手动启动,而Apache2只是将请求转发给它 - 因此Apache2根本不直接触摸MONO。关于如何执行此操作的文档很少,但由于NGINX在该模式下工作,您可以找到有关如何为NGINX设置它的说明以及为Apache2翻译应用程序配置文件。

这些是开始的好地方

http://www.mono-project.com/docs/web/fastcgi/nginx/

http://epmjunkie.com/mono-fastcgi-startup-script/