Rails 4 で複数のリクエストを同時に処理しようとしていますが、これは Rails 3 で非常に簡単に実行できましconfig.threadsafe!
たPuma
。
私がこのコントローラーを持っているとしましょう
class ConcurrentController < ApplicationController
def index
sleep 10000
end
def show
end
end
puma -t 2:16 -p 3000
以前は、 (最小 2 スレッドの場合) でpuma を開始し、ヒットindex
しshow
てからshow
、適切にレンダリングすることができました。
Rails 4 で同じことをしようとすると、Puma はindex
リクエストをロックし、show
レンダリングされません。サーバーにアクセスすると、Puma から次のエラーがCtrl-C
表示されます。
Rack app error: #<ThreadError: Attempt to unlock a mutex which is locked by another thread>
Rails 4 で並行処理を行うには何が足りないのでしょうか? config.threadsafe!
必要ないはずです(試しても違いはありません)