libcurl — keep_alive и CURLOPT_MAXAGE_CONN

#c #c #libcurl

#c #c #libcurl

Вопрос:

Libcurl имеет параметр CURLOPT_MAXAGE_CONN:

«Кэш соединений», в котором хранятся ранее использованные соединения. Когда необходимо выполнить новый запрос, он рассмотрит любое соединение, подходящее для повторного использования. Ограничение CURLOPT_MAXAGE_CONN не позволяет libcurl использовать слишком старые соединения для повторного использования, поскольку старые соединения имеют высокий риск неработоспособности, и, следовательно, их использование приводит к потере производительности, а иногда и к потере обслуживания из-за трудностей с выяснением ситуации. Если в кэше найдено соединение, возраст которого превышает заданный максимальный размер, оно будет закрыто.

Я не совсем понимаю, что это значит.

-Почему, если соединение старше CURLOPT_MAX AGE_CON найдено в «кэше соединений», оно будет закрыто? Зачем закрывать эту связь ?

-Что значит:

 ...since old connections have a high risk of not working...  

Почему в «кэше соединений» —gt; соединения, которые «не работают» ? Как они туда попали ? Почему соединения, которые не работают, не удаляются из «кэша соединений» ?

Комментарии:

1. Это означает, что libcurl не будет поддерживать соединения, которые в последний раз использовались более CURLOPT_MAXAGE_CONN секунд назад. Все остальные слова объясняют, почему вам может понадобиться этот набор опций.

2. Почему соединения, которые не работают, не удаляются из «кэша соединений» . Как вы можете узнать, работает ли старое соединение, не пытаясь повторно использовать его? Опция говорит, что libcurl не тратит время на попытку повторного использования старого соединения, удаляет старое и вместо этого инициирует новое соединение.

3. С. М., мне кажется, вы ошибаетесь. Рекомендации Libcurl гласят: «Вы можете выполнять любое количество вызовов curl_easy_perform, используя один и тот же easy_handle. Если вы намерены передать более одного файла, вам даже рекомендуется это сделать.затем libcurl попытается повторно ИСПОЛЬЗОВАТЬ одно и то же соединение для следующих передач, тем самым делая операции более быстрыми, менее интенсивными и потребляя меньше сетевых ресурсов» (с).

4. Где я ошибаюсь? Вероятность успешного повторного использования со временем очень быстро уменьшается. Если вы полагаетесь на старые незанятые соединения, ваша программа будет работать медленнее, чем другие программы.

5. @S. M., но я не могу знать, что эти соединения не работают.