私は、200接続/秒の領域で処理する必要があるアプリケーションを書いていますが、C#と.NETがこれを処理するかどうか、また必要ならば本当にこれを行うにはC + +を見ている?多くのソケットを.NETで扱う
SocketAsyncEventArgsが行く方法かもしれないが、私はそれに耕される前にidチェックを考えたようです。
各トランザクションは1秒未満で終了する必要がありますが、差があれば最大15秒かかることがあります。
私は、200接続/秒の領域で処理する必要があるアプリケーションを書いていますが、C#と.NETがこれを処理するかどうか、また必要ならば本当にこれを行うにはC + +を見ている?多くのソケットを.NETで扱う
SocketAsyncEventArgsが行く方法かもしれないが、私はそれに耕される前にidチェックを考えたようです。
各トランザクションは1秒未満で終了する必要がありますが、差があれば最大15秒かかることがあります。
このレベルの使用状況を維持しようとすると、オペレーティングシステムの制限が適用されます。一時的なポートはかなり早く期限切れになります。
バーストバースト数を処理するだけであれば、.NETはC++と同じように扱うことができます。 backlog
パラメータをListen
に調整する必要があります。
IISの上限は何ですか? –
@David:わかりません。しかし、私はIISがオペレーティングシステムの制限をバイパスできないことを知っています。一時的なポートしかなく、 'TIME_WAIT'状態では、200接続/秒の使用量がなくなります。そのような持続的な虐待を受けるには、ファームの前に座っているロードバランサが必要です。 –
+1十分な公正。 OSの限界を判断するテストを書こうと思った。 –
私はこの種のことについて書いたhere。
サーバ上にTIME_WAIT
のソケットが蓄積しないようにシステムを設計できれば、OSの観点からはVISTA以降のものであればOKです。サーバー上でTIME_WAIT
を避けるには、サーバー上のソケットを閉じてlingerをオフにして、TCPスタックがFIN
ではなくRST
を送信するようにするか、クライアントがアクティブクローズを発行してサーバーではなくTIME_WAIT
に入ります。
あなたの受諾のスピードについて考える必要があるので、非同期受け入れの呼び出しを使用し、それらの多くを投稿し、また、聴取バックログをかなり大きくします。
サーバをテストするコードが必要な場合は、hereから無料でダウンロードできる「マルチクライアントテストハーネス」があります。 ConnectEx()
を使用して、構成可能な数のasyncを同時にコマンドラインで制御可能な速度で発行します。私はそれについてもう少し詳しくお話しますhere。
C#ではなくC++を使用しようと考えている場合、いくつかのサンプルサーバーを利用できます。hereと、空きI/O完了ポートセットコードhereがあります。
最も重要なことは、IMHOはあなたがtesting for your desired level of scalability from Day 0であることを確認することです。
幸運を祈る!
乾杯しています。 – Dreaddan
予想される同時接続数はどのくらいですか? 200 /秒の数字が15秒まで続く(5%は楽しいと言いましょう)ということは、5分後に1000 /同時に起こることを意味します。 – NotMe
着信接続または発信接続? –