Ubuntu
並發 curl 無法解析主機
我嘗試執行並發 curl,但它可以輕鬆報告“無法解析主機”。要並行執行 curl,我使用“並行”。
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
a.sh
#!/bin/bash curl http://127.0.0.1:81/a.php
一個.php
<?php echo "from some server\n";
僅 4 個並發 curl 如何解決主機故障?我對此進行了模擬,因為我遇到的原始問題在php curl localhost is slow when making concurrent requests中有所描述。我真的不認為這是一個打開文件限制問題,因為只有 4 個並發 curl。誰能解釋為什麼會發生這種情況?順便說一句,作業系統是ubuntu 16.04。
rudimeier 建議使用並行的正確方法。使用後
yes | head -n4 | parallel ./a.sh
問題不再存在。不過,我原來的問題在那裡。
--dryrun
當您對 GNU 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
這顯然不是你想要的。那麼發生了什麼?
如果您分析輸出,您會看到第一個文件中的每一行都與第二個文件中的每一行相結合。更明顯的是:
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 Parallel讀取文件的內容作為參數。而且由於您提供了 2 個文件,因此它是這些文件的交叉產品。你想要的是
:::
:$ parallel --dryrun ::: ./a.sh ./a.sh ./a.sh ./a.sh
你的
parallel
用法是錯誤的。不知何故第四次執行將執行
curl http://127.0.0.1:81/a.php curl http://127.0.0.1:81/a.php
我不完全理解語法,但這會起作用:
yes | head -n4 | parallel ./a.sh
手冊頁的解釋
作業可以是單個命令,也可以是必須為輸入中的每一行執行的小腳本。