Curl стал чаще тормозить. Как определить причину?

Сервис постоянно делает запросы к API другого сервиса через curl. Один запрос обычно занимает сотые доли секунды.

Последнее время участились «тормозные» запросы, время которых правышает секунду, а то и вылетает по таймауту, который я ставлю в 10 секунд.

Причём тенденция негативная – в общем за сутки их всё больше и больше – из-за этого снижается общий перформанс сервиса.

На стороне «того» сервиса с APi статистика бодро рапортует время работы методов в норме, сотые доли секунды. Т.е. типа, у них всё хорошо.

Как понять, в чём проблема на моей стороне? Может, нехватка памяти, других ресурсов? Как подойти к отлову бага?

upd. Из очередного зависшего запроса (обновил таймаут на 5 сек) такие
данные
"url"   : "https://api.xxx.xxx/xxxxxx...",
"content_type"              : null,
"http_code"                 : 0,
"header_size"               : 0,
"request_size"              : 242,
"filetime"                  : -1,
"ssl_verify_result"         : 0,
"redirect_count"            : 0,
"total_time"                : 5.004937,
"namelookup_time"           : 2.7e-5,
"connect_time"              : 2.8e-5,
"pretransfer_time"          : 2.9e-5,
"size_upload"               : 0,
"size_download"             : 0,
"speed_download"            : 0,
"speed_upload"              : 0,
"download_content_length"   : 910,
"upload_content_length"     : 0,
"starttransfer_time"        : 0,
"redirect_time"             : 0,
"certinfo"                  : [],
"primary_ip"                : "xxx.xxx.xxx.xxx",
"redirect_url"              : ""
  • Вопрос задан
  • 427 просмотров
Пригласить эксперта
Ответы на вопрос 2
gobananas
@gobananas
finishhim.ru
Смотрите в curl_getinfo там есть:

CURLINFO_TOTAL_TIME - время выполнения операции в секундах;
CURLINFO_NAMELOOKUP_TIME - время разрешения имени сервера в секундах;
CURLINFO_CONNECT_TIME - время, затраченное на установку соединения, в секундах;
CURLINFO_PRETRANSFER_TIME - время, прошедшее от начала операции до готовности к фактической передаче данных, в секундах;
CURLINFO_STARTTRANSFER_TIME - время, прошедшее от начала операции до момента передачи первого байта данных, в секундах;
CURLINFO_REDIRECT_TIME - время, затраченное на перенаправление, в секундах;

Если всё это у вас быстро отрабатывает то проблема у вас, если какая-то из переменных велика то какая - посмотрите где идёт задержка времени. Если проблема у них, то тут особо ничего не сделать, если не в curl то можно думать уже...
Ответ написан
webinar
@webinar Куратор тега PHP
Учим yii: https://youtu.be/-WRMlGHLgRg
Может быть просто размер контента который отдает метод возрос? Может есть прослойка? Может на клиенте потом идет обработка и там задержка. Мало инфы, так что только догадки.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

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