MVC4 / Mono 3.2.1 应用程序在 Debian 中运行,带有 Nginx 和 mono-fastcgi-4 服务器。它开始为
MONOSERVER=$(which fastcgi-mono-server45)
WEBAPPS="/:/var/www/html/test/"
${MONOSERVER} /applications=${WEBAPPS} /socket=tcp:127.0.0.1:9000 &
测试时,按住浏览器 F5 键 30 秒。之后有很长的延迟,浏览器显示页面加载图标。延迟消息后
504 Gateway Time-out
nginx/0.7.67
出现
和 top 命令(下面的输出)显示单声道 fastcgi 服务器永远或很长时间(2 个核心)占用 200% cpu。阻止这种情况的唯一方法是手动杀死 mono fastcgi 服务器并手动重新启动它
如何使 mono fastcgi 立即返回页面而不使用太多 cpu?
如果使用 Apache 和 mod_mono 托管相同的应用程序,则在浏览器中按住并释放 F5 键会立即返回页面,并且在浏览器中释放 F5 后,cpu 使用率会立即变为 0。
top - 00:40:38 up 1:43, 3 users, load average: 16.49, 15.92, 15.35
Tasks: 59 total, 1 running, 58 sleeping, 0 stopped, 0 zombie
Cpu(s): 34.5%us, 65.5%sy, 0.0%ni, 0.0%id, 0.0%wa, 0.0%hi, 0.0%si,
0.0%st
Mem: 2097152k total, 744828k used, 1352324k free, 0k buffers
Swap: 0k total, 0k used, 0k free, 120120k cached
PID VIRT RES SHR %CPU %MEM TIME+ COMMAND
4366 500m 121m 21m 198 5.9 6:24.45 /opt/mono-3.2/bin/mono
/opt/mono-3.2/lib/mono/4.5/fastcgi- ....
更新
通过 nginx 和 ServiceStack 在 fastcgi-mono-server 上进行小负载测试后,在 Bad gateway 502中回答
建议在 nginx 和 fastcgi 服务器中使用相同数量的线程。
我正在使用默认的 nginx 和 mono fastcgi 服务器配置,它们都可能允许 1024 个线程。
- 单声道实际上允许更少的线程。也许这会导致问题,fastcgi 单声道服务器很旧?
- 将 /multiplex 添加到 fastcgi 单声道服务器可以解决这个问题吗?
- 对于上面这个不是很强大的 VPS 服务器,减少线程数是否合理?
- 是否有一些导致失败的单声道设置?
- fastcgi 日志文件中没有写入任何内容,如何诊断?
有关此的其他信息发布在https://stackoverflow.com/questions/20512978/how-to-limit-mono-197-cpu-usage-in-mono-fastcgi-server