想了解人们对于在Rails服务器上使用Unicorn和Thin的看法。大部分在线文章或基准测试结果都显得非常不完整,因此建立一个集中讨论的地方会很不错。
Unicorn是一个多进程服务器,而Thin是一个事件驱动/非阻塞服务器。如果您的代码是异步或非阻塞的,那么事件驱动服务器是很好的选择 - 纯Vanilla Rails则是阻塞的。因此,除非您使用非阻塞Rails库,否则我真的不认为使用Thin有什么优势。更糟糕的是,在非阻塞服务器中,如果您的I/O循环是阻塞的,则将阻塞整个循环,并且在阻塞调用返回之前无法处理任何其他请求。阻塞库会拖慢Thin的速度!
为什么Heroku选择Thin作为默认服务器(用于cedar)?他们是聪明的家伙,所以我相信他们肯定有理由。
以下链接建议使用4个Unicorn工作进程来替换Thin - 这对我来说非常有道理。 在Heroku上使用4个Unicorn进程