Rails のスケーリングの問題についてよく耳にします。
Rails フレームワークで HTTP リクエストを処理するための実際のコストがどのくらいか知りたいです。つまり、入ってくるすべてのリクエストに対して何が起こらなければならないのでしょうか? クラス解析はありますか?構成?データベース接続の確立?
Rails のスケーリングの問題についてよく耳にします。
Rails フレームワークで HTTP リクエストを処理するための実際のコストがどのくらいか知りたいです。つまり、入ってくるすべてのリクエストに対して何が起こらなければならないのでしょうか? クラス解析はありますか?構成?データベース接続の確立?
それは実際には、アプリケーションの設計自体は言うまでもなく、使用している Web サーバーと使用している構成に大きく依存します。関連する構成と設計の問題は次のとおりです。
ほとんどの Web アプリ フレームワークと同様に、接続プーリング、キャッシュ、およびプロセス管理のためのソリューションがあります。データベース アクセスを管理する方法はたくさんあります。通常のデフォルトのものは必ずしも最高のパフォーマンスではありませんが、その戦略を調整するのはロケット科学ではありません.
内部をより深く掘り下げた人は、おそらくもっと耐え難いほど詳細に話すことができますが、ほとんどのアプリは Apache 上の FastCGI か、よりレールに適した別の Web サーバーのいずれかを使用します。
これは、 Railsリクエストのライフサイクルの概要です。これを実行した後、プロファイルを作成して最適化する特定のセクションを選択できます。
Phusion Passenger (別名 mod_rails) のリリースまでは、デプロイの「標準」は FastCGI ではなく、Apache と mod_proxy (または Nginx など) がフロントにある Mongrel サーバーのクラスターを使用していました。
「Rails はスケーリングしない」の背後にある主な問題は、非常に複雑なスレッド化の問題がいくつかあるという事実です。これは、現在のバージョンの Ruby と利用可能なサービス提供メカニズムでは、Rails がスレッドセーフではなかったことを意味します。これは、高レベルの同時リクエストをサポートするために Rails アプリを実行するために複数のコンテナーが必要であることを意味します。Passenger は、これらすべてを内部で処理するため、この問題の一部を解決できません。また、メモリの処理方法を変更する Ruby (Ruby Enterprise Edition) のカスタム ビルドで実行することもできます。
これに加えて、Ruby と Rails の両方の今後のバージョンでは、スレッド化の問題に直接対処しており、この議論を完全に終わらせる必要があります。
私に関する限り、主張全体はかなり偽物です。「スケール」はアーキテクチャの問題です。