我已经建立了一个 apache + mod_mono asp.net mvc3 网站,但我遇到了一些奇怪的问题。
有时,出于某种我不知道的原因,网站会停止响应。
当这种情况发生时,我会通过 ssh 进入我的 Linode 帐户(我托管网站的地方)并运行“top”,结果发现 mono 进程占用了高达 400% 的 CPU(这怎么可能?可能是虚拟化?)和大量内存。
据说这是一个已知问题(看到这个)。但是,我的网站刚刚建立,在线访客数量从未超过 10-20 人,因此高负载是不可能的。
我也在本地做了一些压力测试,问题没有出现。这个问题只出现在我的生产服务器上(全天候运行),这让我想到可能是 mono 需要偶尔重启(虽然我想知道为什么在我的情况下需要这样做,因为我的网站仍然很低调)。为此,我为 mono 设置了两小时的自动重启时间。即使在此之后,问题仍然出现(尽管频率较低)。
然后,我立即想到配置 MonoMaxActiveRequests 和 MonoMaxWaitingRequests,但事实是我不知道这些值应该低还是高才能避免我面临的问题。我也不明白为什么 MonoMaxWaitingRequests 的默认值只有 20。这是否意味着我的服务器只能处理 40 个同时请求,因为等待线不能超过 20?
总的来说,我的问题是:我做错了什么,还是 mod mono 仍然存在问题?我怎么知道 MonoMaxActiveRequests 和 MonoMaxWaitingRequests 的值是合理的?我应该增加这些值还是减少它们以避免报告的问题?
提前致谢。
答案1
MonoMaxActiveRequests 和 MonoMaxWaitingRequests 使该值为 0。
并设置 MonoAutoRestartMode 请求 1000