[解決済み] Curl:応答を待たない[重複]。
2022-02-17 21:58:32
質問
現在、このようなcurlコマンドに依存するシェルスクリプトを持っています。
curl --request POST -u name:pass -H "Content-Type: application/json"
--data "{data}" https://url.com --cacert ./my_crt
コマンドの応答は必要ありませんし、このコマンドは大きなforループの中にあるので、応答を待つのに多くの時間がかかります。
ということで、bashで全く同じことを、応答を待たずに行う方法はないでしょうか?
どのように解決するのですか?
早く発行したいリクエストが大量にあり、出力にはこだわらない場合、やるべきことは2つあります。
- 同じ接続でより多くのリクエストを行う。
小さなリクエストであれば、1つのコネクションで10リクエストずつ行う方が、10コネクションで1リクエストずつ行うよりもずっと速いのが一般的です。例えば ヘンリーのHTTPポストテストサーバー その差は2.5倍です。
$ time for i in {1..10}; do
curl -F foo=bar https://posttestserver.com/post.php ;
done
Successfully dumped 1 post variables.
View it at http://www.posttestserver.com/data/2016/06/09/11.44.48536583865
Post body was 0 chars long.
(...)
real 0m2.429s
対
$ time {
array=();
for i in {1..10}; do
array+=(--next -F foo=bar https://posttestserver.com/post.php ) ;
done;
curl "${array[@]}";
}
Successfully dumped 1 post variables.
View it at http://www.posttestserver.com/data/2016/06/09/11.45.461371907842
(...)
real 0m1.079s
- 最大でN個のコネクションを並列処理 ホストや自分のマシンがDoSにならないようにするためです。
ここで
sem
GNU parallel からは、並列接続数を 4 に制限しています。 これは、常にフルキャパシティを確保するため、バックグラウンドと待機のより良いバージョンです。
for i in {1..20}
do
sem -j 4 curl -F foo=bar https://posttestserver.com/post.php
done
sem --wait
並列リクエストの数は、ホストの処理能力の高さに依存します。現実的な数は 32+ です。
この2つの戦略を組み合わせることで、DoSを起こさずに大幅なスピードアップを実現することができます。
関連
-
[解決済み] Bashで$()と`の違いはあるのでしょうか?重複] [重複
-
[解決済み] OS X で 'find' コマンドを使用して 'sed' を使用するとエラーが発生する。"無効なコマンドコードです。"
-
[解決済み] mkdir コマンドが bash スクリプトで見つかりません。
-
[解決済み] MINGW64 "make build" エラー。"bash: make: コマンドが見つかりません"
-
[解決済み] LinuxのシェルスクリプトでYes/No/Cancelの入力を促すにはどうしたらいいですか?
-
[解決済み] シェルスクリプトで部分文字列を別の文字列に置き換える
-
[解決済み] cURL を使ってファイル付き POST データをアップロードする
-
[解決済み] ディレクトリをTarするが,完全な絶対パスはアーカイブに保存しない
-
[解決済み】Bashでコマンドライン引数を配列に変換する。
-
[解決済み] どのようにjqを使用して2つのファイルから2つのJSONオブジェクトをマージするには?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] bash スクリプトの "${BASH_SOURCE[0]}" と $( cd $( dirname "xxx" && pwd )) の意味について
-
[解決済み] systemd サービス 203/EXEC の失敗 (そのようなファイルやディレクトリがない) を修正する。
-
[解決済み] configureコマンドが見つからない cygwin
-
[解決済み] mkdir コマンドが bash スクリプトで見つかりません。
-
[解決済み] Bash/Terminalで複数行の環境変数を書き出す方法 例: RSA秘密鍵
-
[解決済み] bashで::演算子は何をするのですか?
-
[解決済み] Bash - "fi ;;" の使い方は?
-
[解決済み] ターミナルでbashスクリプトを実行するにはどうすればよいですか?
-
[解決済み] Grep 'binary file matches'. どうすれば正常なgrepの出力が得られるか?[重複]する
-
[解決済み] BashでDo-whileループをエミュレートする