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

4
我已经更新了以下内容:
  • Ubuntu服务器到16.04.1 LTS
  • MONOv4.6.2
...通过官方仓库更新。自更新以来,网站仍在正常运行,但是大约一两天后,某些MONO进程会变得异常,并占用CPU100%。我的网站不同,主要是简单的HTML页面,只有一点点代码。这是随机发生的,并且每次出现在不同的网站上。完全是随机的。然后我收到了高CPU使用率的电子邮件警报,通过SSH连接,输入“htop”,并杀死进程使其恢复正常......又能持续一天或两天。
这明显看起来像是MONO版本中的一个错误。有什么解决方法吗?其他人有这个问题吗?或者我应该切换到没有这种问题的不同版本?
谢谢
编辑:2天后,所有 MONO进程都占用了整个CPU。
查看Apache2日志文件,我找到了与MONO相关的内容。
WARNING: WebConfigurationManager's LRUcache evictions count reached its max size
Cache Size: 100 (overridable via MONO_ASPNET_WEBCONFIG_CACHESIZE)

此外,“service apache2 restart”并不能解决问题。我必须手动杀死进程或重新启动系统。

1
有人在这里报告了相同的问题 http://stackoverflow.com/questions/30691619/mono-mod-mono-consuming-100-of-cpu - Etienne Charland
2
我也在这里提交了一个错误报告; 目前还没有回应 https://bugzilla.xamarin.com/show_bug.cgi?id=52188 - Etienne Charland
1
“service apache2 reload” 的随机运行会导致 MONO 进程达到100%。第一次导致网站A达到100%;第二次正常;第三次导致网站B和C达到100%。此外,这些网站中有一个是测试网站,从未被调用,甚至没有被即时编译过。 - Etienne Charland
.NET Core现在可以在Ubuntu上运行,并且应该适用于基本的ASP.NET网站;只需要看看需要更改什么,然后找时间尝试一下。 - Etienne Charland
我被建议不要安装.NET Core,因为有些人尝试过它并表现出奇怪的行为。我的问题开始出现在我将Ubuntu升级到16.04.1 LTS和MONO到v4.6.2(和v4.8)时。这主要与MONO版本有关,但也有可能是操作系统升级搞砸了某些东西。 MickyD,在你的情况下问题是什么时候开始出现的? - Etienne Charland
显示剩余13条评论
2个回答

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/


0

我已经尝试了各种不同版本的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有关,而不是我的代码或服务器配置。


好的调查。你花了很多时间在这上面。希望有人能注意到并修复。 - user585968
今天早上,我的服务器再次达到了100%的CPU使用率...我会继续通知你。这个版本肯定有些不同,而且无法通过apache2 reload来重现。如果它继续发生,我将尝试使用3.2.8。 - Etienne Charland
我放弃了。这次我重新安装了一个全新的VPN,并将文件转移过去。可能是就地操作系统升级搞砸了一些东西;许多人建议不要这样做。这应该可以解决问题。 - Etienne Charland
该死。今天早上在一台全新的Debian服务器上,我仍然遇到了6个进程高CPU使用率的问题。除此之外,现在我无法杀死它们。 - Etienne Charland
MONO 5.0已经解决了高CPU使用率的问题!! :D - Etienne Charland
@EtienneCharland 看起来在5.16版本中已经修复了,我有两个服务器,一个运行5.4,另一个运行5.16,而5.16会定期崩溃然后重新加载,在此之后,mono进程将占用100%的CPU并保持在那里,直到我杀死它。 - Anders Emil

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接