MONO 4.6.2 服务器上的高 CPU 使用率
Posted
技术标签:
【中文标题】MONO 4.6.2 服务器上的高 CPU 使用率【英文标题】:MONO 4.6.2 High CPU Usage on Server 【发布时间】:2017-06-21 21:31:44 【问题描述】:我更新了我的:
Ubuntu 服务器到 16.04.1 LTS 和 MONO 到 v4.6.2...来自官方存储库。
自更新以来,网站仍然运行良好,但大约一两天后,一些 MONO 进程变得疯狂并占用 100% CPU .我有不同的网站;大部分是纯 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”也不能解决问题。我必须手动终止进程,或者重新启动。
【问题讨论】:
不确定你的意思。我在 Windows 上使用 Visual Studio 2015 编写,并在 Ubuntu/MONO 上部署。这些网站多年来一直运行良好,直到更新为止。大多数情况下,我更新是因为我想使用需要 v4.2.3.4 或更高版本的 SQLite。 抱歉,这只是个玩笑。您是否尝试过另一台机器或不同类型的 Mono 应用程序?否则,将错误归咎于 .net/mono 通常是大胆的。祝你好运:) 有人在这里报告了同样的问题***.com/questions/30691619/… 我在这里也提交了一个错误;还没有回复bugzilla.xamarin.com/show_bug.cgi?id=52188 'service apache2 reload' 随机导致 MONO 进程以 100% 运行。它第一次导致网站 A 100% 运行。第二次还好。第三次导致网站 B 和 C 去 100%。此外,其中一个网站是一个从未被调用过的测试网站,甚至还没有经过 JIT 编译。 【参考方案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 有关,而不是与我的代码或服务器配置有关。
【讨论】:
很好的调查。你在这上面花了很多时间。希望有人注意到并进行修复 今天早上,我的服务器再次以 100% 的 CPU 使用率... 会及时通知您。不过,这个版本肯定有一些不同,它不能通过 apache2 重新加载来复制。如果它继续发生,我会尝试 3.2.8 我放弃了。这次我重新安装了一个全新的 *** 并将文件传输过来。可能是就地操作系统升级搞砸了。许多人建议不要这样做。这应该可以解决它。 该死。在一个全新的 Debian 服务器上,今天早上我仍然得到 6 个进程的高 CPU 使用率。除了现在我无法杀死他们。 在 MONO 5.0 中修复了 CPU 使用率过高的问题! :D【参考方案2】:在尝试了所有选项后,似乎 MONO 不能很好地与带有 mod_mono 的 Apache2 一起使用。我发现的唯一解决方案是将 Apache2 从 prefork 切换到工作模式,其中 MONO 服务器需要手动启动,而 Apache2 只是将请求转发给它——因此 Apache2 根本不直接接触 MONO。关于如何执行此操作的文档很少,但由于 nginx 在该模式下工作,您可以找到有关如何为 NGINX 设置它并为 Apache2 翻译应用程序配置文件的说明。
这些是开始的好地方
http://www.mono-project.com/docs/web/fastcgi/nginx/
http://epmjunkie.com/mono-fastcgi-startup-script/
【讨论】:
以上是关于MONO 4.6.2 服务器上的高 CPU 使用率的主要内容,如果未能解决你的问题,请参考以下文章
在 Mono Mac 上调用 WCF 客户端通道上的 Close() 超时,但在 Windows 上有效