LINUX.ORG.RU
ФорумAdmin

Отследить, почему curl рандомно по времени загружает одну и ту же страницу

 , ,


0

2

Добрый день. Есть АПИ одного сервиса в России, к нему надо через CURL слать запросы. Сurl на VDS на digitalocean почему-то довольно долго получает ответы от этого апи. Раз на раз не приходится, может получить ответ за полсекунды, а может и за минуту не получить. Даже банальный

curl -O https://api.site.com
выполняется с рандомным огромным разбросом времени.. То же самое на локалке выполняется моментально всегда, без исключений. Можно ли как-то отследить, что именно «подвешивает» запрос, на каком этапе?

Для клоунов: как это сделать, тоже подскажите, а не просто «да». Спасибо.



Последнее исправление: macsucks (всего исправлений: 1)

Cудя по wget, как я понимаю, оно находит на домене 2 ip адреса и когда не коннектится к первому, пробует второй и все ок. Но почему оно к нему не коннектится через раз и всегда разное время попытки перед ошибкой «No route to host.» — может через секунду на следующий ип переключиться, а может через 10 секунд.

--2015-05-07 13:57:30--  https://api.site.com/api.asp
Resolving api.site.com (api.site.com)... x.x.x.x, x2.x2.x2.x2
Connecting to api.site.com(api.site.com)|x.x.x.x|:443... failed: No route to host.
Connecting to api.site.com(api.site.com)|x2.x2.x2.x2|:443... connected.
HTTP request sent, awaiting response... 200 OK

macsucks
() автор топика
curl -O https://api.site.com/api.asp --max-time 1 --retry 5

вот так, допустим, curl из 20 попыток 20 раз получил ответ.. Т.е. получается ip-то первый не хочет просто почему-то отвечать, хотя и доступен и если к нему тут же переконнектиться, то он дает ответ.

macsucks
() автор топика
Ответ на: комментарий от macsucks

Я ничего не понимаю:

curl -O https://api.site.com/api.asp --max-time 10
Выполняется рандомно от 1 до 10 секунд
curl -O https://api.site.com/api.asp --max-time 1
Выполняется всегда моментально и получает верный файл.

Что за бред?

macsucks
() автор топика
Ответ на: комментарий от macsucks

ip-то первый не хочет просто почему-то отвечать

Может на VDS шлется много запросов, и срабатывает какой-то анти-ddos.

goingUp ★★★★★
()
Ответ на: комментарий от macsucks

Ну и? Ты поставил лимит 10 сек, оно тупит до 10 сек, поставил лимит 1 сек, оно тупит до 1 сек, чему удивляешься?

goingUp ★★★★★
()
Ответ на: комментарий от goingUp

Как вариант если у него только аллергия на забугорные ip, потому что с локалки в рашке все ок. Но мне кажется вряд ли дело в этом. Да и второй ip работает же.

macsucks
() автор топика
Ответ на: комментарий от goingUp

Так оно тупит до 1 сек и в любом случае в этот срок получает верный ответ. Почему с лимитом в 10 сек оно до 1 сек не получает его?

macsucks
() автор топика
Ответ на: комментарий от macsucks

На локалке то макось наверное, а на вдс линукс.
Если серьезно, то неплохо было бы рассказать, чей это API чтобы остальные потестили; или попробовать с других вдс (зарубежных и российских). Скорее всего, проблема на стороне сервиса.

оно находит на домене 2 ip адреса и когда не коннектится к первому, пробует второй и все ок

Прописать рабочий ip в hosts и попробовать еще раз.

Но почему оно к нему не коннектится через раз и всегда разное время попытки перед ошибкой «No route to host.»

ns тупят?

xtraeft ★★☆☆
()

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

Может отваливаться коннект к бд, или просто оверлоад. Для начала возьми и прогони его с ab в контейнере/виртуалке (например 100 запросов в 100 потоков) и посмотри что будет

invokercd ★★★★
()

Наверное тебе лучше обратиться к производителям того API. Предположительно защита от ддоса срабатывает на IP с твоего VPS-а.

Legioner ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.