【发布时间】:2013-11-12 01:03:58
【问题描述】:
我试图准确了解如何使用 Phusion Passenger 处理对 rails 应用程序的请求。我已经阅读了Passenger docs(在这里找到:http://www.modrails.com/documentation/Architectural%20overview.html#_phusion_passenger_architecture)并且我了解他们如何在内存中维护rails框架和您的应用程序代码的副本,以便对应用程序的每个请求都不会因启动另一个实例而陷入困境您的应用程序。我不明白这些单独的应用程序实例如何在我的 linux 机器上共享本机 ruby 进程。我一直在做一些研究,这就是我认为正在发生的事情:
一个请求到达 Web 服务器,该服务器分派Passenger 来满足Passenger 的空闲工作进程之一的请求。另一个请求几乎同时出现,并由另一个空闲的乘客工作进程处理。
此时有两个请求正在执行,它们由两个不同的乘客工作进程管理。 Passenger 在 Linux 的原生 Ruby 线程上为每个工作进程创建一个绿色线程。每个绿色线程都使用上下文切换执行,因此一个乘客工作进程上的阻塞操作不会阻止其他工作进程的执行。
我走对了吗?
感谢您的帮助!
【问题讨论】:
标签: ruby-on-rails ruby multithreading passenger green-threads