MONO 4.6.2 高 CPU 服务器上的使用率
MONO 4.6.2 High CPU Usage on Server
我更新了我的:
- 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"也没有解决问题。我必须手动终止进程,或者重新启动。
我尝试过各种 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 有关,与我的代码或服务器配置无关。
在尝试了所有选项后,MONO 似乎不能很好地与具有 mod_mono 的 Apache2 一起使用。我找到的唯一解决方案是将 Apache2 从 prefork 切换到工作模式,其中需要手动启动 MONO 服务器,Apache2 只是将请求转发给它——因此 Apache2 根本不直接接触 MONO。关于如何执行此操作的文档很少,但由于 NGINX 在该模式下工作,您可以找到有关如何为 NGINX 设置它并为 Apache2 转换应用程序配置文件的说明。
这些都是很好的起点
我更新了我的:
- 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"也没有解决问题。我必须手动终止进程,或者重新启动。
我尝试过各种 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 有关,与我的代码或服务器配置无关。
在尝试了所有选项后,MONO 似乎不能很好地与具有 mod_mono 的 Apache2 一起使用。我找到的唯一解决方案是将 Apache2 从 prefork 切换到工作模式,其中需要手动启动 MONO 服务器,Apache2 只是将请求转发给它——因此 Apache2 根本不直接接触 MONO。关于如何执行此操作的文档很少,但由于 NGINX 在该模式下工作,您可以找到有关如何为 NGINX 设置它并为 Apache2 转换应用程序配置文件的说明。
这些都是很好的起点