アプリケーションが長時間のブロッキング I/O 操作を実行している。このような種類のワークロードを適切に処理するには、システムが高い I/O 同時実行性をサポートする必要があります。
Phusion Passenger オープン ソースや Unicorn などの従来のシングルスレッド マルチプロセス システムは、この種のワークロードには適していません。それらが処理できる同時実行の量は、プロセスの数によって制限されます。この問題は、Unicorn の哲学ページの「Just Worse in Some Cases」セクション、またはPhusion Passenger の同時実行のチューニングに関する Phusion の最近の記事に記載されています。
Thin は理論上、イベント I/O モデルにより高い I/O 同時実行性を処理できますが、これを利用するには、アプリケーションとフレームワークを明示的に作成する必要があります。これを行うフレームワークはほとんどありません。Rails も Sinatra も、イベント化された I/O をサポートしていません。Cramp はそれをサポートしており、名前を忘れた別の新しいイベント フレームワークがありました。しかし、Grape はイベント I/O をサポートしていないようです。
解決策は、マルチスレッド対応のアプリケーション サーバーに切り替えることです。これは、高い I/O 同時実行もサポートできます。そのようなアプリケーション サーバーの 1 つがPhusion Passenger 4 Enterpriseで、ハイブリッド マルチスレッド/マルチプロセス モデルをサポートします。マルチスレッドは同時実行性であり、マルチプロセスは安定性と複数の CPU コアを活用するためのものです。Phusion ブログでは、さまざまなワークロードの最適な同時実行設定について説明しています。