From: Casey Bodley Date: Wed, 20 Oct 2021 16:52:29 +0000 (-0400) Subject: rgw: add rgw_curl_tcp_keepalive option for http client requests X-Git-Tag: v18.1.0~499^2~19 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=113cda8834ce31e5203d13d06d05ad036aa8bea1;p=ceph.git rgw: add rgw_curl_tcp_keepalive option for http client requests this can be useful to prevent long-lived connections from being dropped due to inactivity Fixes: https://tracker.ceph.com/issues/48402 Signed-off-by: Casey Bodley --- diff --git a/src/common/options/rgw.yaml.in b/src/common/options/rgw.yaml.in index f17c62ef9a47..03a9c7a8407a 100644 --- a/src/common/options/rgw.yaml.in +++ b/src/common/options/rgw.yaml.in @@ -1951,6 +1951,17 @@ options: services: - rgw with_legacy: true +- name: rgw_curl_tcp_keepalive + type: int + level: advanced + long_desc: Enable TCP keepalive on the HTTP client sockets managed by libcurl. This does not apply to connections received by the HTTP frontend, but only to HTTP requests sent by radosgw. Examples include requests to Keystone for authentication, sync requests from multisite, and requests to key management servers for SSE. + enum_values: + - 0 + - 1 + default: 0 + services: + - rgw + with_legacy: true - name: rgw_copy_obj_progress type: bool level: advanced diff --git a/src/rgw/rgw_http_client.cc b/src/rgw/rgw_http_client.cc index 5bf977d4f3b3..255db71a50d2 100644 --- a/src/rgw/rgw_http_client.cc +++ b/src/rgw/rgw_http_client.cc @@ -586,6 +586,7 @@ int RGWHTTPClient::init_request(rgw_http_req_data *_req_data) curl_easy_setopt(easy_handle, CURLOPT_ERRORBUFFER, (void *)req_data->error_buf); curl_easy_setopt(easy_handle, CURLOPT_LOW_SPEED_TIME, cct->_conf->rgw_curl_low_speed_time); curl_easy_setopt(easy_handle, CURLOPT_LOW_SPEED_LIMIT, cct->_conf->rgw_curl_low_speed_limit); + curl_easy_setopt(easy_handle, CURLOPT_TCP_KEEPALIVE, cct->_conf->rgw_curl_tcp_keepalive); curl_easy_setopt(easy_handle, CURLOPT_READFUNCTION, send_http_data); curl_easy_setopt(easy_handle, CURLOPT_READDATA, (void *)req_data); curl_easy_setopt(easy_handle, CURLOPT_BUFFERSIZE, cct->_conf->rgw_curl_buffersize);