問題タブ [rate-limiting]
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.
php - データベース クエリのレートを制限または削減する必要がありますか?
テキスト ファイルから MySQL データベースにデータをインポートする PHP スクリプトを作成しています。これらのテキスト ファイルは非常に大きく、平均的なファイルには 10,000 行あり、それぞれがデータベースに必要な新しい項目に対応しています。(ファイルを頻繁にインポートすることはありません)
ファイルから 1 行を読み取ってから INSERT クエリを実行すると、10,000 回連続して問題が発生するのではないかと心配しています。これを行うためのより良い方法はありますか?10,000 個の値すべてに対して 1 つの INSERT クエリを実行する必要がありますか? それともそれは同じくらい悪いでしょうか?
メディアに到達して、一度に 10 件または 100 件のエントリを実行できるかもしれません。本当に私の問題は、何が良い習慣なのかわからないことです。たぶん、10,000 回のクエリが連続して実行されても問題ありません。心配する必要はありません。
助言がありますか?
php - Sleep() を使用するか、単に拒否するか
私は遅延システムを実装しているので、虐待的と思われるIPはSleep()を介して自動的に増分遅延を取得します。
私の質問は、これにより CPU 使用率が増加し、攻撃者が遅延中に新しいインスタンスを開き続けた場合、サイトが強制終了されるのでしょうか? または、sleep() コマンドは最小限の CPU/メモリしか使用せず、小さなスクリプトでは大きな負担にはなりません。私は彼らが制限について明白な方法で知らないようにしたいので、彼らを完全に否定したくはありませんが、なぜ私がそうすべきかを喜んで聞きます.
[小さなサイトで IP を悪用していると見なす理由については議論しないでください。理由は次のとおりです。最近、cURL をページにしてユーザーに情報を返すスクリプトを作成しましたが、いくつかの IP が私の愚かな小さなスクリプトをスパムしていることに気付きました。cURL を頻繁に使用すると、サーバーの im polling から結果を取得できなくなり、正当なユーザーがその結果を利用できなくなることがあります。]
ruby-on-rails - Twitter API のバグ - ツイートが間違った User_id を提供します。回避策はありますか?
この公開された Twitter API バグの回避策を探しています: http://code.google.com/p/twitter-api/issues/detail?id=214
ツイートをフェッチすると、ツイートは正しくない User_id を返します。ただし、正しい画面名が提供されます。
私の目標は、API を使用して 2 つのことを行うことです。
Twitter アカウントのすべてのフォロワーを取得します。これは、この API 呼び出しに対応する Ruby スクリプト
myfollowers = Twitter.follower_ids("justinzollars")(twitter gem)で簡単です:個々のユーザーからのツイートのみを保存します。https://dev.twitter.com/docs/api/1/get/search
問題は、最初の API 呼び出しで が返さuser_idsれ、ツイート検索呼び出しでfrom_user_id_str(user_name) が返されることです。ツイート検索 API 呼び出しから返されるuser_idそれぞれの を Twitter に要求して、何万もの API 呼び出しを行いたくありません。from_user_id_str
この問題を効率的に解決するにはどうすればよいですか?
api - TwitterAPIのユーザー/oAuthを使用したルックアップのレート制限が間違っている
oAuthを使用して約400人のユーザーのユーザー/ルックアップを取得しようとしています。結果データは問題ありませんが、レート制限を確認すると、oAuthではなくIPに基づいていました。「http://api.twitter.com/1/account/verify_credentials.xml」でoAuthクレデンシャルを確認しましたが、結果は問題ありません。誰かが同じ問題を経験しますか?
PSがホームタイムラインのツイートを取得するには、正しいレート制限が使用されます。
ありがとう!ステファン
java - スイングレート制限
レート制限したい長い再描画操作があります。つまり、最大で N ミリ秒ごとに 1 回呼び出されるようにします。
私の現在の解決策はやや不十分です。イベントを取得するたびにTimer、短い期間の Swing を使用しています。restart()これにより、イベントが N ミリ秒のウィンドウ内で発生した場合に再描画がトリガーされないことが保証されます (つまり、再描画はイベントの後に発生し、N ミリ秒の「静止」期間が経過します)。
私が望むのは、最初のイベントから最大で N ミリ秒後に再描画が呼び出され、再描画期間が最大で N であることを確認することです。何かアイデアはありますか? start(すでに開始されているものを呼び出した場合の影響はTimer文書化されていません)。
python - Python スレッドの同時実行数と速度を制限する
スレッド数が与えられた場合、ワーカー関数の呼び出し速度を 1 秒あたり 1 回などに制限したいと考えています。
私の考えは、すべてのスレッドで最後に呼び出しが行われた時間を追跡し、これを各スレッドの現在の時間と比較することでした。次に、場合current_time - last_time < rate。スレッドを少しスリープさせます。私の実装に何か問題があります - ロックの仕組みについて間違った考えを持っているのではないかと思います。
私のコード:
への 1 秒あたり 1 回の呼び出しが発生することを期待していましたがdo_work、ほぼ同時に 2 回 (スレッドごとに 1 回) の呼び出しが発生し、その後に 1 秒間の一時停止が続きます。なにが問題ですか?
わかりました、編集します。アイテムがキューに入れられる速度を単純に調整するというアドバイスは良かったのですが、ワーカーによってアイテムがキューに再度追加される場合に注意する必要があることを思い出しました。標準的な例: ネットワーク タスクでのページネーションまたはバックオフ リトライ。私は次のことを思いつきました。実際のネットワーク タスクでは、eventlet/gevent ライブラリのほうがリソースが使いやすいと思いますが、これは単なる例です。基本的には、優先キューを使用してリクエストを積み上げ、余分なスレッドを使用してアイテムを山から実際のタスク キューに均等な速度でシャベルします。作業員によるパイルへの再挿入をシミュレートし、再挿入されたアイテムが最初に処理されます。
wcf - WCF REST サービスのサービス拒否防御
WCF REST 検索サービスを作成しましたが、サービス拒否防御を実装して要求の数を制限する方法を知りたいです。
java - 特定のシナリオに対するレート制限アルゴリズムの提案
以下のレート制限のユースケースを実装するための最良のメカニズムは何ですか? Token Bucket のような一般的なアルゴリズムを使用できますが、memcached のコンテキストで実装したいと考えています。これに関するヘルプに感謝します。
- 顧客 ABC からの電話は 1 日に 100 件のみ許可します。
- 顧客 ABC に対して 1 時間に 50 回の API 呼び出しのみを許可します。
- 任意のユーザー ID について、顧客 ABC に対して 1 時間に 5 つの API 呼び出しのみを許可します。
api - API をレート制限する方法
API のリクエストを制限する最善の方法は何ですか? 基本的に、ユーザーを 1 時間あたり 360 件の API リクエスト (10 秒ごとに 1 件のリクエスト) に制限したいと考えています。頭に浮かぶのは、すべての API リクエストを追跡して保存することです。
ip-address requests が 360 より大きい場合は、単純に次のヘッダーを返します。
次に、カウンターの hourly-requests を 1 時間ごとにロールバックします。カウンタをインクリメントするためにすべての API リクエストで MySQL クエリを作成する必要があるため、これは非常に非効率的な方法のように思えます。また、1 時間ごとにすべてのカウンターをリセットする cron タスクが必要です。
よりエレガントで効率的なソリューションはありますか?
javascript - ExpressJS での悪意のある動作を防止するためのレート制限
誰かが、私が取り組んでいるアプリケーション (主にフロントエンドの JavaScript 内) のいくつかの欠陥に気付きました。これにより、たとえば、一度に大量のボタンをクリックして、大量のトランザクションを送信する可能性が残されています。メール。これは明らかに良くありません。
ExpressJS でこれを処理する 1 つの方法はapp.all()、特定の時間枠内で発生するリクエストの数をカウントするために使用することだと思います。これをタイムスタンプ付きのセッション メタデータに保存し、Y 時間内に X 件を超えるリクエストが発生した場合は、制限が切れるまでしばらくそれらを停止します。
誰かが以前にこれをやったことがありますか、または私を助けるためのヒント/ヒントはありますか? アプリに簡単に出入りできるものが望ましいです。ありがとう!