У меня есть сервер с которого я дергаю api через curl, в большинстве случаев исполняется за примерно 0,5-1 сек, но иногда обрывается по таймауту(я выставил 10 сек) потому что без таймаута он вис прям надолго. как можно понять, отладить где проблема. пример url - http://172.16.11.41/Storage/Devices/
код такой:
if (NULL == (curl = curl_easy_init()))
goto exit;
res = curl_easy_setopt(curl, CURLOPT_USERNAME, "admin");
res = curl_easy_setopt(curl, CURLOPT_PASSWORD, "admin");
res = curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, curl_response_cb);
res = curl_easy_setopt(curl, CURLOPT_WRITEDATA, (void *) &response);
res = curl_easy_setopt(curl, CURLOPT_TIMEOUT, 10L);
res = curl_easy_setopt(curl, CURLOPT_PORT, 80);
res = curl_easy_setopt(curl, CURLOPT_VERBOSE, 1L);
res = curl_easy_setopt(curl, CURLOPT_STDERR, fp);
res = curl_easy_setopt(curl, CURLOPT_SSL_VERIFYHOST, false);
res = curl_easy_setopt(curl, CURLOPT_SSL_VERIFYPEER, false);
res = curl_easy_setopt(curl, CURLOPT_URL, url);
я так же пытался вытащить(с помощью функции curl_easy_getinfo) после обрыва таймаута, время которое тратится на какие то операции курла
CURLINFO_TOTAL_TIME: 10.001
CURLINFO_NAMELOOKUP_TIME: 0.000
CURLINFO_CONNECT_TIME: 0.001
CURLINFO_PRETRANSFER_TIME: 0.001
CURLINFO_STARTTRANSFER_TIME: 0.000
CURLINFO_REDIRECT_TIME: 0.000
и вывод флага CURLOPT_VERBOSE
* Trying 172.16.11.41:80...
* TCP_NODELAY set
* Connected to 172.16.11.41 (172.16.11.41) port 80 (#0)
* Server auth using Basic with user 'admin'
> GET /Storage/Devices/ HTTP/1.1
Host: 172.16.11.41
Authorization: Basic YWRtaW46YWRtaW4=
Accept: */*
* Operation timed out after 10001 milliseconds with 0 bytes received
* Closing connection 0