我来自Java / Tomcat堆栈,并且是RoR堆栈的新手。我正在尝试了解有关puma配置的一些概念。我已经读过this和this,但对于工作人员的用语仍然不清楚。
我了解到,工作人员会导致运行puma的子进程。因此,从本质上讲,当使用多核实例时,可以实现并行性。但是您也可以通过启动许多ec2单核实例来做到这一点吗?
如果实例不是多核的,则将worker设置为0还是有意义的。
这里的任何信息都会极大地帮助我。谢谢!
答案 0 :(得分:1)
在Puma的上下文中,工作程序和线程都用于实现并发性,因此Puma可以处理请求,而不必始终等待先前的请求完成。一个好的配置将需要在工作线程和线程数量之间找到一个良好的平衡,并且需要考虑已部署应用程序的多个方面:
工人:
线程
workers x
和threads y
,那么您将获得总共x * y
个请求处理线程将多个工作程序与部署到多个EC2实例进行比较遗漏了一部分情况:将Puma与多个工作程序一起使用时,有一个主Puma进程在端口上侦听并将每个请求路由到可用的工作进程。当您有多个EC2实例时,则需要以某种方式照顾它们之间的负载平衡-对于可能是ELB或ALB的AWS而言。部署到多个实例和负载平衡是以任何方式部署任何严重的Web应用程序的正确方法,但这不应该阻止您通过辅助线程和线程更好地利用实例资源。
我建议尝试对worker和线程的配置进行实验,并开始将worker的核心和线程数设置为10-如果遇到内存使用问题或资源利用率不足的情况,请进行调整。