2012-02-07 16 views
3

これはかなり読み込まれた質問ですが、ここで私が評価しようとしていることがわかります。オープンnettcpbinding接続の制限

私は、WCF経由で信頼性の高いセッションtcp接続を受け入れ、クライアントにコールバックチャネルを開きます。 99.999%の時間で、サーバーがコールバックを発行するのを待っているだけです(接続を維持するだけで、何も処理していない)。

どのマシンボトルネックに当てはまりますか?私は既にWCF <servicethrottling />の属性をバインディングで処理しましたが、負荷/最大接続/「他の何かが欠けています」という観点から、Azure Small Instanceあたりのクライアント数を知ることができます全体的にみると、これらの人たちは空いて座っているだけで待っています。

+0

+1良い質問 - 必ずしも良いデザインではなく、良い質問です。本物で非規範的なデザインの回答が面白いでしょう。 –

+0

ええ、私は確かに異なるデザインを考えていますが、レイテンシのレスポンスは設計要件であるため、いくつかのメカニズムを排除することが期待されます。 –

答えて

1

あなたがアウトバウンド接続を開いている場合は、自分の役割のOnStart()のコードで

ServicePointManager.DefaultConnectionLimit

を増やすことを検討したいと思います。私はデフォルトを思い出すことはできませんが、私はそれはあなたがそれに取り組んでいる一方であなたは短いメッセージの多くをプッシュする場合は、同様false

ServicePointManager.UseNagleAlgorithm

を設定することを検討可能性がある12

だ信じる(下に、ああ、1400バイト)。それ以外の場合、メッセージは最大0.5秒間バッファリングされます。私はthis SO answerのナグルについてもう少し詳しく述べました。

+0

良いアドバイス!私は 'DefaultConnectionLimit'に対処しましたが、私はNagleアルゴリズムを考慮していませんでした。私が様々なサイズのコールを持っている場合は、Nagleを使用している場合、1400よりも小さいものもあれば、それより大きいものもあります。 –

+0

大きなパケットの場合、Nagleの影響を受けません。 –

+0

涼しい、知っていることは素晴らしい。入力いただきありがとうございます! –