問題タブ [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.
java - 何千ものスレッドを作成せずに、何千もの Netty クライアントを作成する
Netty 4 を使用してかなり単純なサーバーを作成しました。数千の接続を処理するようにスケールアップすることができましたが、最大 40 スレッドを超えることはありません。
テストするために、数千の接続を作成するテスト クライアントも作成しました。残念ながら、これは接続を作成するのと同じ数のスレッドを作成します。クライアントのスレッドを最小限に抑えることを望んでいました。私はこれについて多くの投稿を見てきました。多くの例は、単一接続のセットアップを示しています。 これとこれは、クライアント間で NioEventLoopGroup を共有することを示しています。限られた数の nioEventLoopGroup を取得していますが、他の場所で接続ごとにスレッドを取得しています。パイプラインで意図的にスレッドを作成しているのではなく、何ができるかわかりません。
これは、クライアント コードのセットアップの一部です。これまでの調査に基づいて、一定のスレッド数を維持する必要があるようです。クライアント接続ごとのスレッドを防ぐために私がしなければならないことはありますか?
主要
モッククライアント
django - GEvent / GUnicorn と C10k の問題
C10Kの問題は、従来の Web サーバーの最大容量が最大 10k の同時制限を持つことを示しています。
nginx などのサーバーは、スレッドの代わりにシングルスレッド モデルと非同期通信を使用して、着信要求を処理します。AFAIK Geventは、スレッドの代わりにグリーンレット(同じスレッド内で切り替え可能な実行コンテキスト) を使用します。
これにより、2 つの質問が生じます (ここでも、非同期モデルを使用していると仮定します。gevent と gunicorn を考えてください)。
- そのような状況では: リソースを浪費するリスクはありますか? greenlet ベースのサーバーについては、さらに質問を制限します。リソースの占有は実際にはミューテックス ロックであると仮定します (ミューテックス ロックは、現在のプロセスではありませんが、現在のスレッドをブロックします。しかし、現在はマルチスレッド アーキテクチャではありません。グリーンレットを使用する場合...私は間違っていますか?)。
- greenlet ベースのアーキテクチャ (またはスレッド化されたアーキテクチャ) を使用していない場合: Websocket はサーバーにどのように実装されていますか?
そして、追加の質問が Django に当てはまります。
- ビュー内になく、ビュー パラメータに直接アクセスできない場合、現在のリクエストを特定するにはどうすればよいですか? (カスタムミドルウェア内に入力された)を使用して現在のスレッドを識別するという悪い習慣があり
threading.local
ましたが、当時は非スレッドアーキテクチャを考慮していませんでした(私のコードは、「1つのリクエスト(意味)」と言える限り問題ありませんでした) 1 つのスレッド」)。
request
これは、フォームが(鉱山/カスタム)フィールドのメソッドを呼び出したときに現在のものを特定するclean()
(つまり、現在のリクエストに応じてデータに対して値を検証する)場合に役立ちます。ただし、10k の制限を超える同時要求があり、非同期 (非スレッド化) アプローチを使用している場合、このメソッドは失敗します。
java - 2015 年に 64 ビット Linux で Java ブロッキング IO が C10K 問題を解決しましたか?
2015 年に 64 ビット Linux で Java ブロッキング IO が C10K 問題を解決しましたか?
言い換えると:
64 ビット Linux で実行されているソケットごとのスレッド Java サーバー (NIO ではない) は、10,000 のスレッドを実行し続けることができますか?
1 ミリ秒または 2 ミリ秒以内に (接続の小さなサブセットで) 着信データに自明に応答できますか?
nginx - ポートで 65k を超えるリクエストを行う方法
次のような単純なノード js Web ソケット サーバーがあります。
このサーバーは 65k の接続を使用します (1 つのポートが最大 65k の接続を使用するため)。10 万を超える接続を処理できるようにサーバーを拡張するにはどうすればよいですか?
私は最近、異なるポートでそのようなサーバーを 3 つ開き、nginx を使用して負荷分散を試みましたが、nginx サーバーも 65k 接続しか使用できないため、無駄でした。nginxの設定はこちら
ポート 8000 は 65k 接続しか使用できません。
この種の状況は、リアルタイムでどのように処理されますか。私はここではアマチュアであり、サーバーをスケーリングするための適切なポインターが必要です。ソリューションは、nginx を使用する必要はありません。それは何でもかまいません。このような問題を処理する方法を知りたいだけです。詳細な回答をいただければ幸いです。ありがとう。