同時カールはホストを検証できません。

同時カールはホストを検証できません。

同時カールを実行しようとしましたが、「ホストを確認できません」と簡単に報告されます。カールを並列に実行するには、「並列」を使用します。

parallel :::: ./a.sh ./a.sh
from api server
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100    16    0    16    0     0  13781      0 --:--:-- --:--:-- --:--:-- 16000
from api server
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100    16    0    16    0     0  14925      0 --:--:-- --:--:-- --:--:-- 16000
from api server
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100    16    0    16    0     0  15009      0 --:--:-- --:--:-- --:--:-- 16000
from api server
from api server
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100    16    0    16    0     0  14324      0 --:--:-- --:--:-- --:--:-- 16000
curl: (6) Could not resolve host: curl
100    16    0    16    0     0  44198      0 --:--:-- --:--:-- --:--:-- 44198

禁煙健康増進協会

#!/bin/bash

curl http://127.0.0.1:81/a.php

a.php

<?php

echo "from some server\n";

4つの同時カールだけでホストが失敗する問題を解決するには?私が経験した元の問題が次に説明されているので、これをシミュレートしています。同時リクエストを行うとphpcurl localhostが遅くなる。同時カールが4つしかないので、これが開かれたファイル制限の問題だとは思いません。なぜこれが起こるのかを説明できる人はいますか?ちなみに、オペレーティングシステムはUbuntu 16.04です。


Rudy Meierは、並列性を使用する正しい方法を提案しました。使用後、yes | head -n4 | parallel ./a.sh問題はもう存在しません。それでも私の元の問題は残っています。

ベストアンサー1

--dryrunGNU Parallelが実行しているものが混乱している場合は、次を試してください。

$ parallel --dryrun :::: ./a.sh ./a.sh
#!/bin/bash #!/bin/bash
#!/bin/bash 
#!/bin/bash curl http://127.0.0.1:81/a.php
 #!/bin/bash
 curl http://127.0.0.1:81/a.php
curl http://127.0.0.1:81/a.php #!/bin/bash
curl http://127.0.0.1:81/a.php 
curl http://127.0.0.1:81/a.php curl http://127.0.0.1:81/a.php

これは明らかにあなたが望むものではありません。それで何が起こりましたか?

出力を分析すると、最初のファイルのすべての行が2番目のファイルのすべての行と結合されることがわかります。より明確に:

file-b:
1
2
3

$ parallel --dryrun :::: b b
1 1
1 2
1 3
2 1
2 2
2 3
3 1
3 2
3 3

間違いはGNUを並列化することです::::::::読むファイルの内容がパラメーターとして使用されます。 2つのファイルが提供されたため、そのファイルの交差積が生成されます。

あなたが望むもの:::

$ parallel --dryrun ::: ./a.sh ./a.sh
./a.sh
./a.sh

おすすめ記事