問題タブ [throttling]
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.
linux - Linux で遅延およびドロップされたパケットをシミュレートする
アプリケーションのパフォーマンスを測定するために、Linux 上でパケットの遅延UDP
と損失をシミュレートしたいと考えています。TCP
これを行う簡単な方法はありますか?
wcf - WCF ServiceModelService.Instances を制限するものは何ですか?
(IIS6/Server2003/BasicHttpBinding) を使用して WCF サービスの負荷テストを実行しようとしています。サービスは次のように調整されます。
サーバー上の呼び出し数を評価するために、ServiceModelService 3.0.0.0 パフォーマンス カウンターを使用しています。maxConcurrentCalls を 20、15、10、またはそれ以下に調整すると、インスタンス パフォーマンス カウンターは、WCF が調整を尊重していることを示します。ただし、maxConcurrentCalls を 30 に変更すると、インスタンス数が 24 を超えることはありません。さらに、未処理コール数が 24 を超えることはありません。他に何が WCF を制限しているのでしょうか?
c# - WCF は、約 10 回の呼び出し後に応答を停止します (スロットリング)。
私はWCFサービスとそれへのサービス参照を持つアプリケーションを持っています。アプリケーションにはループがあり、各反復でこのwcf Webサービスのメソッドを呼び出しています。
問題は、約 9 回の呼び出しの後、停止することです...そしてPause
、VS のボタンを押すと、呼び出しを行う回線でスタックしていることがわかります。
しばらく待った後、次のTimeoutExceptionがスローされます。
リクエスト チャネルは、00:00:59.9970000 の後に応答を待っている間にタイムアウトになりました。Request への呼び出しに渡されるタイムアウト値を増やすか、Binding の SendTimeout 値を増やします。この操作に割り当てられた時間は、より長いタイムアウトの一部であった可能性があります。
これについて少し調べたところ、アプリケーションで app.config を編集することを含むいくつかの解決策が見つかりました。その抜粋を以下に示します。
.
次に、デバッグを停止してから数分後に、壊滅的な障害が発生したことを知らせるエラー メッセージが表示されます。
この問題を解決するにはどうすればよいですか? 通常の Web サービスを使用していたときは、この問題は発生しませんでした。
参考までに、全体は次のapp.config
とおりです。
[更新] 解決策:
どうやら、各リクエストの後Close
、接続する必要があります...各リクエストの後に接続を閉じていますが、それは魅力のように機能しています。
まだ理解できないのは、app.config で maxConcurrentCalls と maxConcurrentSessions を 500 に設定しているのに、10 しか作れないということです。(上記の app.config に何か問題があるのかもしれません)
上記の質問 (現在は破線) に対する答えはapp.config
、サービス構成ファイル ( web.config
)ではなく client を編集していたためです。
c# - WCF:ServiceThrottlingBehaviorをWCFサービスに追加するにはどうすればよいですか?
WCFサービスのインスタンスを返すための次のコードがありますServiceClient
。
最近、タイムアウトで問題が発生したため、次のようなスロットル動作を追加することにしました。
私の質問は、上記のコードのどこにこれをインスタンスに追加する必要があるかということです。throttlingBehaviour
MusicRepo_DBAccess_ServiceClient
私がウェブ上で見つけたいくつかの例から、彼らは次のようなことをしています。
上記のコードではServiceHost
、私が使用していないのにaを使用してOpen()
いて、インスタンスを開いているときに(を使用して)開いていることに注意してくださいMusicRepo_DBAccess_ServiceClient
...これが私を混乱させた理由です。
web-services - asmx Web サービスに要求を一度に 1 つずつ処理させる
リクエストの「バースト」を受信する ASMX Web サービスをデバッグしています。つまり、Web サービスが約 1 ~ 2 秒以内に 100 個の非同期要求を受け取る可能性があります。各リクエストの処理には約 1 秒かかるようです (これは想定内であり、このパフォーマンスで問題ありません)。ただし、重要なことは、各リクエストが順次処理され、並列処理が行われないことです。Web サービスによって呼び出される外部コンポーネントのために、同時要求処理は必要ありません。Web サービスが各応答のみを順番に処理するように強制する方法はありますか?
machine.config で maxconnection 属性を確認しましたが、これは送信接続に対してのみ機能するようで、受信接続を調整したい場合にのみ機能します。
現時点では、WCF へのリファクタリングはオプションではないことに注意してください。
Win2003でIIS6を使用しています。
wcf - WSHttpBindingを使用すると、WCF同時リクエストがサーバーに積み重なる
WSHttpBinding を使用して HTTP 経由で通信する WCF クライアント/サーバー アプリがあります。
サーバーのセットアップ: 標準の WCF を使用したセルフホスティングServiceHost
。私の実際のサービスクラスは次のように分類されます:
クライアント セットアップ:同期サービス呼び出しを使用してビジュアル スタジオで生成されたクライアント プロキシを使用します (proxy.call_server_method
サーバーが完全に応答するまでブロックします)。
シナリオ: サーバー上で実行するのに 20 秒かかる特定のメソッド呼び出しがあります。クライアントはこのメソッドを別のスレッドで呼び出すため、保留されていないため、ConcurrencyMode.Multiple
WCF はサーバー上の別のスレッドでもメソッドを実行する必要があります。
NetTcpBinding
この理論は、アプリを使用するように構成すると、すべてが正常に機能するという事実によって裏付けられています。
問題:
を使用するようにアプリを構成するWSHttpBinding
と、この長いメソッド呼び出しによって http 要求が「バックアップ」されます。ログを調べて、フィドラーを使用して HTTP 要求をデバッグすることで、この動作を確認しました。
例:
- クライアントがバックグラウンド スレッドで 20 秒間のリクエストを開始する
- クライアントはフォアグラウンド スレッドでリクエスト B と C を開始します
- リクエスト B と C はサーバーに送信されますが、サーバーは 20 秒間のリクエストが完了するまでそれらを処理しません。
でも時々:
- リクエスト B と Cは、20 秒のリクエストが返されるまで送信されません(フィドラーにも表示されません) (これはまれです)。
- 注:
<add address="*" maxconnection="100"/>
クライアントの app.config を設定すると、この (ように見える) 現象が発生しなくなりました。
- 注:
- リクエスト B は送信され、すぐに応答を受け取りますが、リクエスト C は 20 秒のリクエストが完了するまで保留されます (これはまれです)。
問題を示すフィドラーからのタイムラインは次のとおりです:(クリックすると拡大版が表示されます)
ご覧のとおり、リクエストはすべてサーバーにバックアップされています。20 秒のリクエストが完了すると、すべてのレスポンスがフラッディングされますが、一部のリクエストが遅延しないことに注意してください...
だから、質問:
- ここで一体何が起こっているのですか?
NetTcpBinding
を使用すると正常に動作し、使用すると動作しないのはなぜWSHttpBinding
ですか? - 一貫性のない動作はなぜですか?
- 修正するにはどうすればよいですか?
ノート:
- サーバー上でロックしていません。ブレークポイントを設定して使用
!syncblk
しましたが、ロックが保持されていないと一貫して報告されます。 - それは私のスレッドではありません (それ以外の場合、NetTcpBinding は機能しません)。
<serviceThrottling maxConcurrentCalls="1000" maxConcurrentInstances="1000" maxConcurrentSessions="1000" />
サーバーのapp.configに設定しました- 20 秒の呼び出しはタイマーで待機しているだけであり、CPU、ディスク、またはネットワークをスラッシングしていません。
- 非同期呼び出しを使用するためにアプリケーションを再構築する必要のないソリューションが望ましいと思います...それは大量のレガシー コードであり、理解できないものをいじりたくないのです。
c# - c# アプリケーションの帯域幅使用をプログラムで制限する方法は?
ここには、さまざまな Web サービスに接続し、ftp または http サーバーからファイルをダウンロード/アップロードするバックアップ アプリケーションがあります。アプリケーションの帯域幅使用を制限する最も簡単な方法は何ですか?
アプリケーションをインストールして実行すると、すべてのオフィスの従業員のインターネット アクセスが遅くなり、最終的には地獄に落ちてしまうため、これを行う必要があります。だから私は、勤務時間中にアクティブになり、夜間に無効になる速度制限を実装したいと思います.
wcf - WCF でのサービス ビジー状態エラー
.Net WCF サービスで次の例外が断続的に発生します。「 http://MyServer/TestWCF/MyService.svcにある HTTP サービスがビジー状態です。」
ここで何か不足していますか?
基本的な http バインディングを使用しており、WCF スロットリングを有効にしています。
. . . .
スロットリングは問題の解決に役立ちますか? また、トラフィックの多い Web サイトのスロットリングに推奨されるパラメーター値を教えてください。