問題タブ [c10k]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
database - 何十億もの情報の保存を処理していますか?
10 億以上のオブジェクトを含むデータベースが必要であり、いつでもデータベース内の任意のアイテムに即時 (またはほぼ即時) にアクセスする必要がある場合の最適なソリューションは何ですか。
このデータベースは、1 秒あたり約 1000 リクエストでクエリされます。データベース内の行はほとんど無関係であるため、リレーショナルである必要はありません。
理由が気になる方は、動く要素のシミュレーション用です。
Web サーバーの負荷分散されたクラスターを介してアクセスされる Cassandra のいくつかの負荷分散されたクラスターのようなものを考えていました。
お金は重要な要素なので、安いほど良いです。ソフトウェアやツールに制限はありませんが、オープン ソースである必要があります。
多数のユーザーが大量のデータ (リレーショナルである必要はまったくありません) を処理するのに適したデータベース ソリューションを探しているだけです。
冗長性と障害を処理することが不可欠です。
私を正しい方向に導くための高レベルのアイデアは素晴らしいでしょう。
c++ - 多くの同時接続にはどのソケットベースのモデルを使用すればよいですか?
MMORPG サーバーとまったく同じように、多くの同時接続を行うサーバーに最適なソケットベースのモデルを知る必要があります。
c10k について読みましたが、たとえばサーバーで一度に 5000 クライアントしか許可されない場合、何を使用すればよいですか? ブロックソケット、スレッド化 (クライアントごとに 1 つのスレッド)? ノンブロッキングソケット、ノンスレッド? わずか数スレッドですべてのクライアントを処理するループ? IOCP?
要するに、長所と短所は何ですか?私はすでにグーグルで検索しましたが、これらすべてのモデルに関する具体的な「対」記事は見つかりませんでした。
または、c10k の問題を処理する簡単な方法はありますか?
プラットフォーム: Windows XP
python - ノンブロッキング アーキテクチャの Python Web サーバー オプション
多数の同時接続を処理し、高負荷 ( C10K ) で応答するように設計された Python ベースのノンブロッキング Web サーバー環境を探しています。webapp のバックエンドとして必要です。典型的なシナリオでは、webapp クライアントは、WebSocket を使用してサーバーに対して複数の呼び出しを行います。
これまでのところ、python land で 2 つのオプションを見つけました。
もちろんpython以外にもnode.jsはありますが、できればpythonのコーディング環境が望ましいです。
上記の2つ(または私が知らない他のもの)のうち、どれをお勧めしますか? 長所と短所は何ですか?それとも、web.py のノンブロッキング フロントエンドを作成して、独自のフレームワークを展開する必要がありますか?
私の懸念は、上記のプロジェクトは両方ともコミュニティのサポートが良いように見えますが、Django、CherryPy、Pylon などほど主流ではありません。したがって、将来サポートが不十分になる可能性のある選択をすることを恐れています。
javascript - サーバー上のイベントについてクライアントのブラウザに通知するにはどうすればよいですか?
サーバー側でpython(Tornado)を使用し、クライアント側でjavascriptを使用しています。私にはよくある状況があります。あるユーザーが別のユーザーにメッセージを送信します。そして、サーバーがクライアントのブラウザ(メッセージの受信者)に新しいメッセージについて通知するようにします。どうすればいいですか?クライアント(おそらくWebSocketを使用)または他の何かとの長期的な接続を確立する必要がありますか?
PS WebSocketを介して接続を確立するために、優れたライブラリTornadIOを見つけました
PS2したがって、接続を確立するプロジェクトの負荷が高いため、betwebbサーバーと各クライアントは疑わしいように見えます。私はc10k問題を恐れています。それは私の知識の欠如だけかもしれません。
windows - Windows用の高性能ソケットライブラリ
POCOライブラリにソケット用のとても素敵なライブラリを見ました。これは、LinuxシステムとWindowsシステムの両方で機能する「クラシック」アプローチ、主にSELECTベースのアプローチを使用します。
高性能プロキシ/Socksサーバーで使用したいので、非同期IO(完了ポート?)を使用するWindowsに固有のものがあるかどうかを知りたいです。
linux - Linux での c10k の処理
Linux BSD ソケットを使用している場合、アクティブな接続数がシステム制限を超えるとどうなりますか? コールリターンエラーを受け入れますか?
システムが無期限のソケット接続を受け入れることができたとしても、整数の最大値のサイズを超えることはできますか?
ソケット記述子は 4 バイトの整数値です。32 ビット システムで 1 つのプロセスで 4294967295 を超えるアクティブな TCP 接続を維持することは、理論的に不可能であると言えますか? (ハードウェアと OS がこれをサポートできると仮定します。サービスの品質は問題ではありません。アクティブな TCP 接続を維持したいだけです)
ばかげた質問かもしれませんが、興味があります。
tornado - 実際のC10kはどうですか?
Tornadoを使用して作成した小さなアプリケーションをテストしたところ、 10k の同時接続には程遠い状態です。テストを行うために、OpenSuse 12.2 64 ビットの下でSiegeを使用しました。マシンは8GBのi7 です。結果は次のとおりです。
このエラーが発生しました:
そして、10k接続を使用する場合:
エラーが発生します:
linux - C++ サーバー - 1024 を超える接続
Linux で実行され、libev ライブラリを使用する C++ のチャット サーバーがあります。1024 を超えるクライアントに接続しようとすると、-1 ファイル記述子でクラッシュします。
サーバーに対して 1024 を超える同時接続を許可したいと考えています。libev ドキュメントを見ると、select、poll、および epoll を使用するように構成できるように見えますが、デフォルトが何であるかはわかりません。
libev を使用してファイル記述子の制限を増やす方法に関するヒントや参考文献は大歓迎です!
multithreading - TCP/IP - クライアント アプローチごとのスレッドで C10K を解決する
有名なC10k の記事を読み、それが書かれてからどのように進化したかについて Web で検索した後、今日の標準サーバーが接続ごとのスレッドを使用して10000 を超える同時接続を処理できるかどうかを知りたいと思います(おそらく作成/強制終了プロセスを回避するためのスレッドのプールの助け)。
問題へのアプローチに影響を与える可能性のある詳細:
- 入力、中間処理、および出力。
- 各接続の長さ。
- サーバーの技術仕様 (コア、プロセッサ、RAM など)
- このシステムを AIO、ポーリング、グリーン スレッドなどの代替技術と組み合わせる...
明らかに、私はこの問題の専門家ではないので、コメントやアドバイスをいただければ幸いです :)