curl max-time и connect-timeout вообще не работают

В данный момент RHEL7 (Red Hat Enterprise Linux 7 ).

https://www.redhat.com/en/services/training/ex200-red-hat-certified-system-administrator-rhcsa-exam

Примечание. :RedHat — логотип торговой марки, Red Hat — название компании. Red Hat Entreprise Linux текущее название выделенного сервера дистрибутива Red Hat

2
05.03.2020, 09:52
1 ответ

Не видя вашего curl --version, позвольте мне рискнуть в темноте, основываясь на том, что я столкнулся именно с этой проблемой. Ваша версия curl собрана без c -are? Первая строка curl --versionдолжна сказать вам:

curl 7.71.0-DEV (x86_64-unknown-linux-gnu) libcurl/7.71.0-DEV c-ares/1.10.0

Недавно я столкнулся с той же проблемой, когда тайм-ауты DNS приводили к тому, что curl превышал указанные тайм-ауты. При включенном подробном отображении тайм-аут DID поиска DNS будет равен 5 секундам, но затем он будет ждать до 20 секунд, чтобы полностью истечь время ожидания и закрыться. Мы root вызвали его к версиям без c -ares(библиотеки асинхронного преобразователя DNS ).

Я собрал его из исходного кода, взятого с их github , используя эти инструкции , но добавив./configure --enable-ares

Здесь вы можете увидеть, как он построен с помощью c -ares c-ares/1.10.0в информации о версии

$ /usr/local/bin/curl --version
curl 7.71.0-DEV (x86_64-unknown-linux-gnu) libcurl/7.71.0-DEV c-ares/1.10.0
Release-Date: [unreleased]
Protocols: dict file ftp gopher http imap pop3 rtsp smtp telnet tftp
Features: AsynchDNS IPv6 Largefile UnixSockets

и ведет себя так, как ожидалось

$ time /usr/local/bin/curl --max-time 5 google.com -v
* Resolving timed out after 5000 milliseconds
* Closing connection 0
curl: (28) Resolving timed out after 5000 milliseconds

real    0m5.002s
user    0m0.000s
sys     0m0.002s

И построен без ц -ар

/usr/local/bin/curl --version
curl 7.71.0-DEV (x86_64-unknown-linux-gnu) libcurl/7.71.0-DEV
Release-Date: [unreleased]
Protocols: dict file ftp gopher http imap pop3 rtsp smtp telnet tftp 
Features: AsynchDNS IPv6 Largefile UnixSockets

Тайм-аут не работает:

time /usr/local/bin/curl --max-time 5 google.com -v
* Resolving timed out after 5000 milliseconds
* Closing connection 0
curl: (28) Resolving timed out after 5000 milliseconds

real    0m20.023s
user    0m0.003s
sys     0m0.000s

Если вы собираете curl из исходного кода или это вариант, вам, вероятно, просто нужно включить этот параметр.

Редактировать :JamesTheAwesomeDude прекрасно заметил, что стоит выяснить, откуда взялся этот cURL. В моем случае это был свежий инстанс EC2 под управлением Amazon Linux 2.

$ cat /etc/*-release | grep PRETTY_NAME
PRETTY_NAME="Amazon Linux 2"
2
28.04.2021, 23:21

Теги

Похожие вопросы