web-server – 每个CPU独角兽进程的最佳数量

前端之家收集整理的这篇文章主要介绍了web-server – 每个CPU独角兽进程的最佳数量前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我们正在Unicorn下运行 Ruby on Rails Web应用程序.我们的应用程序不受严格的cpu限制(我们有一个带有12个内核的双Xeon E5645系统,峰值负载平均值约为6).我们最初从40名Unicorn工作人员开始,但应用程序内存占用量随着时间的推所以,现在我们必须降低工作进程的数量.我认为标准(cpu核心1的数量)公式也适用于Unicorn,但我的同事试图说服我,我们应该为每个cpu保留更多的Unicorn实例并提供 this link.但是,我不确定为什么我们需要这么花闲置Unicorn进程的内存很多.

我的问题是:每个cpu核心有多个Unicorn实例的原因是什么?是不是因为独角兽的一些建筑特色?我知道忙碌的Unicorn进程无法接受新连接(我们使用UNIX域套接字与Unicorn实例BTW进行通信)但我认为backlog是为了解决这个问题而引入的.是否有可能无论如何都能克服每个cpu规则的2到8个Unicorn实例?

解决方法

好的,我终于找到了答案. Unicorn工作人员的最佳数量cpu核心数量没有直接关系,这取决于您的负载和内部应用程序结构/响应能力.基本上我们使用抽样分析器来确定工人的状态,我们试图让工人闲置70%,30%做实际工作.因此,70%的样本应该“等待select()调用以从前端服务器获取请求”.我们的研究表明,工人只有3种有效状态:0-30%的样本处于空闲状态,30-50%的样本处于闲置状态,50-70%的样本处于空闲状态(是的,我们可以获得更多空闲样本但是那里这并不是真正的意义,因为应用程序响应性不会发生显着变化).我们认为0-30%的情况是“红区”,30-50%的情况是“黄区”.

猜你在找的HTML相关文章