問題タブ [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.
c# - Webリクエストを抑制するのは誰の責任ですか?
サードパーティのWebサイトから情報を取得するクラスライブラリに取り組んでいます。設定された時間(〜0.5秒)内に要求が多すぎると、アクセスされているWebサイトは応答を停止します。
私のライブラリのパブリックメソッドは、Webサーバー上のファイルのリソースに直接関連しています。つまり、メソッドが呼び出されるたびに、anHttpWebRequest
が作成され、サーバーに送信されます。すべてがうまくいけば、XMLファイルが呼び出し元に返されます。ただし、これが0.5秒未満の2番目のWebリクエストである場合、リクエストはタイムアウトになります。
私のジレンマは、リクエストのスロットリングをどのように処理するか(あるとしても)にあります。明らかに、私は発信者が応答を待っていることを望んでいません-特に彼らの要求がタイムアウトすることを完全に確信している場合は。
私のライブラリが作成したWebリクエストをキューに入れて調整する方が理にかなっていますか、それともクライアントがAPI呼び出しの間に十分な時間待機しない場合、ライブラリは単に例外をスローする必要がありますか?
security - PHP でユーザーのログイン試行を抑制するにはどうすればよいですか
私はちょうどこの投稿を読んでいたところですフォームベースのWebサイト認証の決定的なガイド高速ログイン試行の防止.
ベスト プラクティス #1: 次のように、失敗した試行の数に応じて増加する短い時間の遅延:
試行失敗 1 回 = 遅延なし 試行
失敗 2 回 = 遅延 2 秒 試行
失敗 3 回 = 遅延 4 秒 試行
失敗 4 回 = 遅延 8 秒 試行
失敗 5 回 = 遅延 16 秒
など。
このスキームを攻撃する DoS は非常に現実的ではありませんが、一方で、遅延が指数関数的に増加するため、壊滅的な被害をもたらす可能性があります。
PHP でログイン システムにこのようなものを実装するにはどうすればよいでしょうか?
msmq - MSMQ - 高速プロデューサー/低速コンシューマー
高速プロデューサー/低速コンシューマーのバリエーションである (MSMQ を使用した) メッセージングに問題があります。プライベート MSMQ キューで未処理の未消費メッセージ数を取得する方法はありますか? それを使用してプロデューサーを抑制したいと思います。
MSMQ でセマフォ パラダイムを使用したいと考えています。このパラダイムでは、未処理のメッセージ数が指定された数よりも少ない場合にのみプロデューサー アプリケーションがメッセージを送信します。
基本的に、私は次のようなことをしたいと思います
私の構成:MSMQ 3.0でXP / 2003に勝つ
ruby-on-rails - Web APIリクエストのスロットリング/レート制限を実装する一般的な方法は何ですか?
Web APIリクエストスロットリングを実装する一般的な方法は何ですか?一時的な禁止とともにこれを提供する一般的なWebフレームワーク(Rails、Django、Javaなど)用のライブラリはありますか?
関連する質問は、IPによってリクエストを制限することにより、Webサーバーでレート制限が行われることを示唆していますが、それはすべてのリクエストが同等に扱われることを意味します。次の理由により、スロットルをアプリケーションで処理する必要があるようです。
- 一部のAPI呼び出しには、異なるレート制限がある場合があります(たとえば、オートコンプリートAPIには、他の呼び出しよりも高い制限があります)
- APIキーによる一時的な禁止は、Webサーバーでは処理できません
- プロキシの背後からのリクエストは同じように扱われます(?)
java - 分散アプリからのリクエストを抑制できますか?
私のアプリケーションはWebサービス要求を行います。プロバイダーが処理するリクエストの最大レートがあるので、それらを抑制する必要があります。
アプリが単一のサーバーで実行されていたとき、私はアプリケーションレベルでそれを実行していました。これは、これまでに行われたリクエストの数を追跡し、現在のリクエストが最大許容負荷を超えた場合に待機するオブジェクトです。
現在、単一のサーバーからクラスターに移行しているため、実行中のアプリケーションのコピーが2つあります。
- 2つのノードを組み合わせると許容負荷を超える可能性があるため、アプリケーションコードで最大負荷をチェックし続けることができません。
- 他のノードがアイドル状態の場合、最初のノードがより多くのリクエストを送信できるため、各サーバーの負荷を単純に減らすことはできません。
これはJavaEE5環境です。アプリケーションが送信するリクエストを抑制するための最良の方法は何ですか?
performance - Oracle でユーザーが使用するリソースを調整または制限する方法はありますか?
マルチユーザー Web アプリケーションを使用していますが、サード パーティのレポート アプリケーションが Oracle 10g データベースにクエリを実行すると問題が発生します。
レポート クエリがシステムの速度を低下させ、他のすべてのユーザーに影響を与えています。
クエリが他のユーザーに影響を与えないように、このユーザーのセッションを調整する方法はありますか?
.net - Windows .NET サービスの CPU 使用率を制限する
サービス コードの内部または外部で、.NET で記述された Windows サービスの CPU 使用率を調整する方法はありますか。現在のスレッドを最低の優先度に設定することはオプションではありませんが、例外が発生し始めるとすぐに CPU 負荷が上昇します。これを制限することは可能ですか?
ruby - ルビーファイルストリームのレート制限
私は、地理的に分散した多数のノードからS3バケットにフラッシュビデオファイルをアップロードするプロジェクトに取り組んでいます。
ビデオファイルはそれぞれ約2〜3 MBで、10分ごとに(ノードごとに)1つのファイルのみを送信しますが、これらのノードはストリーミングメディアをCDN、および場所が原因で、最大512kのアップロードしか取得できません。
私はASW-S3gemを調査してきましたが、レート制限はありませんが、IOストリームを渡すことができることを認識しています。これを考えると、read
メソッドをオーバーライドするレート制限ストリームを作成し、レート制限ロジックを追加して(たとえば、最も単純な形式でsleep
は読み取り間の呼び出し)、オーバーライドされたスーパーを呼び出すことができるかどうか疑問に思っています。方法。
私が検討したもう1つのオプションは、Net :: HTTPのコードをハッキングsend_request_with_body_stream
し、ループを使用しているメソッドにレート制限を設定するwhile
ことですが、どちらが最適なオプションかは完全にはわかりません。
私はIOクラスを拡張しようとしましたが、それはまったく機能せず、単にクラスから継承してclass ThrottledIO < IO
も何もしませんでした。
任意の提案をいただければ幸いです。
.net - WCF サービスのスロットリング
BasicHTTPBinding と SSL が有効になっているコンソール アプリに WCF サービスをデプロイしています。次の属性も設定されます。
また、スロットリング動作を
一方、複数のクライアントを同時に開始し (複数のスレッド)、サーバー上でトランザクションを実行するテスト クライアント (負荷テスト用) を作成しました。すべて問題ないように見えますが、サーバーでは CPU 使用率が増加しないため、ログを追加してサーバーへの同時呼び出しの数を表示したところ、6 を超えたことはありませんでした。
パフォーマンス カウンターのログ記録コードを 2 回以上確認しましたが、問題ないように思えます。
では、この状況でどこに問題があるのかお聞きしたいです。ContextMode や ConcurrencyMode はまだ指定していません。
この投稿の後、テストクライアントの別のインスタンスを開始するたびに、同時サーバーコールカウンターが2に増加することに気付きました.1つのインスタンスのみを実行している場合、同時受信コールの最大数は2になり、インスタンスが2つある場合は同じ値が4になります等々。一度のプロセスからの WCF 呼び出しの数に制限はありますか?
********3月17日に追加********
今日、サーバーが実行されている同じマシンで、1 つのテスト クライアント (50 人の同時ユーザー) を使用して別のテストを実行しました。今回は、表示したい正確な結果を取得しています (つまり、サーバーが受信した最大同時呼び出し数 = 50)。
しかし、他のマシンでも同じことをする必要があります。誰でもこれについて私を助けることができますか?
wcf - X秒ごとに処理するキューに入れられたWCFサービス
設定された時間間隔でキューに入れられたリクエストを処理できるサービスを作成する必要があります。たとえば、Webにアクセスしてサイトから財務データを取得するには、リクエストを1秒に1回に制限する必要があります。私はWCFを初めて使用しますが、(1)MSMQを使用したWCFがこれを実装するための適切な選択であるかどうかわかりません。(2)もしそうなら、間隔を強制するための最良のメカニズムは何ですか?スレッド待機?タイマー(それがどのように機能するかわからない)。