Puma是一个RUBY 和 RACK 的快速、连续的网络服务器,Puma是用于Ruby / Rack应用程序的简单,快速,多线程,高度并发的HTTP 1.1服务器,它仅适用于运行Rack应用程序。
专为提高速度和并发性而设计
Puma使用C优化的Ragel扩展(继承自Mongrel)处理请求,该扩展以可移植的方式提供快速,准确的HTTP 1.1协议解析。然后,Puma使用线程池处理请求。每个请求都在单独的线程中处理,因此真正的并发Ruby实现(JRuby,Rubinius)将使用所有可用的CPU内核。
Puma被设计为Rubinius的首选服务器,但与JRuby和MRI配合也很好。
在MRI上,有一个全局VM锁(GVL),可确保一次只有一个线程可以运行Ruby代码。但是,如果您要进行大量的阻塞IO(例如对外部API(如Tw itter)的HTTP调用),Puma仍然可以通过允许IO等待并行进行来提高MRI的吞吐量。
快速开始
$ gem install puma
$ puma
如果没有参数,puma将在名为config.ru的工作目录中寻找一个rackup(.ru)文件。