参考:https://esrally.readthedocs.io/en/stable/faq.html?highlight=create
What do latency and service_time mean and how do they relate to the took field that Elasticsearch returns?
The took
field is included by Elasticsearch in responses to searches and bulk indexing and reports the time that Elasticsearch spent processing the request. This value is measured on the server so it includes neither the time it took for the request to get from the client to Elasticsearch nor the time it took for the response to arrive back at the client. In contrast, service_time
is measured by Rally as the length of time from when it started to send the request to Elasticsearch until it finishing receiving the response. Therefore service_time
does include the time spent sending the request and receiving the response.
The explanation of latency
depends on your choice of benchmarking mode:
- Throughput benchmarking mode: In this mode, Rally will issue requests as fast as it can: as soon as it receives a response to one request it will generate and send the next request. In this mode
latency
andservice_time
are identical. - Throughput-throttled mode: You may prefer to run benchmarks that better simulate the traffic patterns you experience in your production environment. If you define a schedule (e.g. a target throughput) then Rally runs in throughput-throttled mode and generates requests according to this schedule regardless of how fast Elasticsearch can respond. In this mode the generated requests are first placed in a queue within Rally and may stay there for some time.
latency
includes the time spent in this queue whereasservice_time
does not:latency
measures the time from generating the request until the response is received whereasservice_time
measures the time from sending the request to Elasticsearch until a response is received.