ちょっとコントローラで時間の掛かるメソッド(アクション)があった。余所のサーバでの処理とかあって少し時間が掛かる。
と、そのアクションの実行(待ち)中、併行アクセス中の別セッションでの別アクションまで待ちになる。Rails はシングルスレッドなのか。
試しに、余所のサーバとでの処理とか言わず、単純化してみる。Railsアプリケーション作成後、(rspec_)scaffold でひと通りのものを作り、コントローラの updateメソッドの中に sleep 10 とか書いてみる。で、updateすると、その待ち時間の間別ブラウザでのモデルの一覧表示も待ちになる。
手元の WEBrick - development環境でも、同僚の Mongrel - development環境でも同様。
AWDR(2nd, ja), P.572, 27.2 にも単一スレッドに関する説明があった。Apacheなりなんなりをフロントエンドにした本番環境に配置(deploy)すればいいという。
フロントエンドのWebサーバやロードバランサの選定、deploy方法についても該当箇所「第27章 配置と本番環境」にあるのでちゃんと読みましょう。