3

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

4

0 回答 0