summary | shortlog | log | commit | commitdiff | tree
raw | patch | inline | side by side (parent: 5b1d67d)
raw | patch | inline | side by side (parent: 5b1d67d)
author | Marc Fournier <marc.fournier@camptocamp.com> | |
Wed, 25 Mar 2015 23:01:54 +0000 (00:01 +0100) | ||
committer | Marc Fournier <marc.fournier@camptocamp.com> | |
Wed, 25 Mar 2015 23:55:21 +0000 (00:55 +0100) |
- rename PostTimeoutSec parameter to Timeout
- change Timeout to take milliseconds rather than seconds, for the sake
of consistency: collectd allow working at the sub-second scale if need
be, so it's a shame to restrain this here.
- do *not* set the default timeout to the value of Interval. Rationale:
what matters here is that each POST request completes before the send
buffer fills up again. How fast the send buffer fills up completely
depends on how much data is collected. Interval is unrelated to this,
and unlike read plugins, I don't think it makes a good value to use as
the default timeout.
- change Timeout to take milliseconds rather than seconds, for the sake
of consistency: collectd allow working at the sub-second scale if need
be, so it's a shame to restrain this here.
- do *not* set the default timeout to the value of Interval. Rationale:
what matters here is that each POST request completes before the send
buffer fills up again. How fast the send buffer fills up completely
depends on how much data is collected. Interval is unrelated to this,
and unlike read plugins, I don't think it makes a good value to use as
the default timeout.
src/collectd.conf.pod | patch | blob | history | |
src/write_http.c | patch | blob | history |
diff --git a/src/collectd.conf.pod b/src/collectd.conf.pod
index a0d6f892cc0cb6efe5b6fa677f306c5893cd5127..092f0b5ca74bf1c1cebe09146fb93d9a6b9d9279 100644 (file)
--- a/src/collectd.conf.pod
+++ b/src/collectd.conf.pod
Sets bytes per second value for B<LowSpeedLimit> to make a decission if
connection is too slow. Default value is C<100>.
-=item B<PostTimeoutSec> I<Seconds>
+=item B<Timeout> I<Timeout>
+
+Sets the maximum time in milliseconds given for HTTP POST operations to
+complete. When this limit is reached, the POST operation will be aborted, and
+all the data in the current send buffer will probably be lost. Defaults to 0,
+which means the connection never times out.
-If defined, provided positive integer value will be used to set maximum time
-in seconds that you allow for transfer(http post) operation to take.
+The C<write_http> plugin regularly submits the collected values to the HTTP
+server. How frequently this happens depends on how much data you are collecting
+and the size of B<BufferSize>. The optimal value to set B<Timeout> to is
+slightly below this interval, which you can estimate by monitoring the network
+traffic between collectd and the HTTP server.
=back
diff --git a/src/write_http.c b/src/write_http.c
index 0e1bc734a1d4341b64cfc59274c785d849422cec..2c59d64b4ddbb8eae93e02903a5cc8d7f97881a1 100644 (file)
--- a/src/write_http.c
+++ b/src/write_http.c
_Bool abort_on_slow;
int low_limit_bytes;
time_t interval;
- int post_timeout;
+ int timeout;
#define WH_FORMAT_COMMAND 0
#define WH_FORMAT_JSON 1
curl_easy_setopt (cb->curl, CURLOPT_LOW_SPEED_TIME, cb->interval);
}
- if (cb->post_timeout > 0)
- curl_easy_setopt (cb->curl, CURLOPT_TIMEOUT, cb->post_timeout);
+ if (cb->timeout > 0)
+ curl_easy_setopt (cb->curl, CURLOPT_TIMEOUT_MS, cb->timeout);
curl_easy_setopt (cb->curl, CURLOPT_NOSIGNAL, 1L);
curl_easy_setopt (cb->curl, CURLOPT_USERAGENT, COLLECTD_USERAGENT);
cb->format = WH_FORMAT_COMMAND;
cb->sslversion = CURL_SSLVERSION_DEFAULT;
cb->low_limit_bytes = WH_DEFAULT_LOW_LIMIT_BYTES_PER_SEC;
- cb->post_timeout = 0;
+ cb->timeout = 0;
pthread_mutex_init (&cb->send_lock, /* attr = */ NULL);
cf_util_get_boolean (child,&cb->abort_on_slow);
else if (strcasecmp ("LowLimitBytesPerSec", child->key) == 0)
cf_util_get_int (child, &cb->low_limit_bytes);
- else if (strcasecmp ("PostTimeoutSec", child->key) == 0)
- cf_util_get_int (child, &cb->post_timeout);
+ else if (strcasecmp ("Timeout", child->key) == 0)
+ cf_util_get_int (child, &cb->timeout);
else
{
ERROR ("write_http plugin: Invalid configuration "
if (cb->abort_on_slow)
cb->interval = CDTIME_T_TO_TIME_T(plugin_get_interval());
- if (cb->post_timeout == 0)
- //setting default timeout to plugin interval.
- cb->post_timeout = CDTIME_T_TO_TIME_T(plugin_get_interval());
-
/* Determine send_buffer_size. */
cb->send_buffer_size = WRITE_HTTP_DEFAULT_BUFFER_SIZE;
if (buffer_size >= 1024)