我们正在Unicorn下运行Ruby on Rails网络应用程序。我们的应用程序不受CPU的严格限制(我们有一个双核Xeon E5645系统,带12个内核,峰值平均负载约为6)。我们最初从40名Unicorn工人开始,但随着时间的推移,应用程序内存占用量增加了。因此,现在我们必须减少工作进程的数量。我认为标准(CPU内核数+ 1)公式也适用于Unicorn,但是我的同事试图说服我我们应该为每个CPU保留更多Unicorn实例,并提供此链接。但是,我不确定,为什么我们需要在空闲的Unicorn进程上花费这么多的内存。
我的问题是:每个CPU内核拥有一个以上Unicorn实例的原因是什么?是由于独角兽的某些建筑特色吗?我知道繁忙的Unicorn进程无法接受新的连接(我们正在使用UNIX域套接字来与Unicorn实例BTW通信),但是我认为引入积压就是为了解决这个问题。是否有可能克服每个CPU规则2至8个Unicorn实例?