Puma是一個(gè)RUBY 和 RACK 的快速、連續(xù)的網(wǎng)絡(luò)服務(wù)器,Puma是用于Ruby / Rack應(yīng)用程序的簡(jiǎn)單,快速,多線程,高度并發(fā)的HTTP 1.1服務(wù)器,它僅適用于運(yùn)行Rack應(yīng)用程序。
功能介紹
專為提高速度和并發(fā)性而設(shè)計(jì)
Puma使用C優(yōu)化的Ragel擴(kuò)展(繼承自Mongrel)處理請(qǐng)求,該擴(kuò)展以可移植的方式提供快速,準(zhǔn)確的HTTP 1.1協(xié)議解析。然后,Puma使用線程池處理請(qǐng)求。每個(gè)請(qǐng)求都在單獨(dú)的線程中處理,因此真正的并發(fā)Ruby實(shí)現(xiàn)(JRuby,Rubinius)將使用所有可用的CPU內(nèi)核。
Puma被設(shè)計(jì)為Rubinius的首選服務(wù)器,但與JRuby和MRI配合也很好。
在MRI上,有一個(gè)全局VM鎖(GVL),可確保一次只有一個(gè)線程可以運(yùn)行Ruby代碼。但是,如果您要進(jìn)行大量的阻塞IO(例如對(duì)外部API(如Tw itter)的HTTP調(diào)用),Puma仍然可以通過允許IO等待并行進(jìn)行來提高M(jìn)RI的吞吐量。
快速開始
$ gem install puma
$ puma
如果沒有參數(shù),puma將在名為config.ru的工作目錄中尋找一個(gè)rackup(.ru)文件。