Puma如何允许IO等待并行完成以提高MRI的通量?



来自彪马的自述:

MRI上有一个全局VM锁(GVL(,它确保一次只有一个线程可以运行Ruby代码。但是,如果你正在进行大量的IO阻塞(例如对Twitter等外部API的HTTP调用(,Puma仍然可以通过允许IO并行等待来提高MRI的吞吐量。

不幸的是,它没有解释提高MRI吞吐量的机制。

我知道MRI在调用系统IO时会释放GIL,但这是MIR而不是彪马的改进。

我想知道彪马是如何改进并行阻塞IO的。

如有任何参考,不胜感激。

Puma正在使用反应堆模式。自Puma 4.0.0以来,Puma使用nio4r进行事件处理,这意味着它可以使用epoll和kqueue等本地后端(通过libev(。(在JRuby上,nio4r支持java.nio(.

最新更新