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