1

ある種の負荷分散のためにプロセス生成が行われる、非常に重いプロセス システムがある場合、それは明らかです。

web-server について話している場合: 分散できるため、接続ごとに新しいプロセスを生成することをお勧めします。しかし、他に何がありますか?モデル、ビュー、コントローラーの単一プロセス? それらはすべて「線形」の方法で実行されるため、奇妙に聞こえます。そのため、並列処理がうまくいかず、スワッピングでオーバーヘッドが発生するだけです。また、「Model、View、Controller」はとても軽いので、ひとつのプロセスにとどまることができますよね。

では、「新しい接続」の状況を除いて、どこで新しいプロセスを生成するのが良いのでしょうか。

アドバイスありがとうございます。

4

2 に答える 2

2

一般に、管理する共有リソースがある場所であればどこでも使用できます。それはソケット、またはデータベース接続である可能性がありますが、共有インメモリ データ、またはある種のステート マシンである可能性もあります。

値のリストの並列処理を行うこともできます (pmap を参照)。

「スワッピング」に関しては、Erlang プロセスはスケジューリングに op-sys 機能を使用せず、スケジューリングはほとんど無料であることを知っておく必要があります。

Web アプリケーション サーバーの特定のケースでは、私はあなたの質問を理解しています。共有状態がほとんどない従来の Web アプリケーションを作成している場合。Web フレームワークはおそらく、キャッシュやセッション状態などを既に処理しています (これらの機能はプロセスを生成します)。

私たちは皆、このステートレスな Web アプリケーション モデルに深く慣れ親しんでいます。私たちは子犬の頃から、ステートフル システムは開発が難しく、スケーリングできないと言われてきました。それに挑戦している方もいらっしゃると思います。WebSocket のブラウザー サポートが向上し、Erlang や Clojure などのサーバー側言語が安全な状態管理を備えたスケーラブルなプラットフォームを提供するようになると、よりインタラクティブな Web アプリケーションを作成できる人が現れるでしょう。極端な例として、WoW を Web アプリケーションとしてイメージできますか?

于 2012-01-13T23:31:56.530 に答える