|
|
1
9
将fcgi与ruby结合使用是非常麻烦的。 实际上每个人都搬到了 Mongrel 因此,我建议你也这样做。 |
|
|
2
8
我使用fcgi已经有一段时间了,但我认为如果线程花费的时间太长,fcgi进程可能会抛出一个SystemExit。这可能是Web服务没有响应,甚至是一个缓慢的DNS查询。一些谷歌的结果显示,python和fcgi也有类似的错误,所以迁移到mongrel是个好主意。 This post 是我的参考资料,我以前设置了Mongrel,现在我仍然参考它。 |
|
|
3
5
我以前经常在apache1/fastcgi上看到这些。我认为这是由在Ruby完成之前FastCGI挂断造成的。 转向混血儿是一个很好的第一步,但还有更多的事情要做。从实时页面上的Web服务中挑选,特别是从Rails中挑选,这是一个坏主意。轨道不是线程安全的。您可以支持的并发连接数等于集群中的Mongrels(或乘客进程)数。 如果您有一个Mongrel,并且有人访问一个调用超时时间为10秒的Web服务的页面,那么对您的网站的每个请求都将在这段时间内超时。大多数负载均衡器只是盲目地循环通过您的Mongrels,因此如果您有两个Mongrels,则每个其他请求都将超时。 任何不可预知的缓慢都需要在作业队列中发生。第一次点击/slow/action会将作业添加到队列中,/slow/action会通过页面刷新或通过Ajax查询不断刷新,直到作业完成,然后从作业队列中获取结果。现在,有一些Rails的作业队列,但是最古老的,可能也是最广泛使用的一个是 BackgroundRB . 另一种选择是,根据应用程序的性质,每隔n分钟通过cron剔除一次服务,在本地缓存数据,并从缓存中读取实时页面。 |