From 130835ce3ff37e5fc923f19fd8ede03bd99c665a Mon Sep 17 00:00:00 2001 From: Lars Holmberg Date: Thu, 24 Oct 2024 20:29:32 +0200 Subject: [PATCH] docs: rewrote increasing request rate page --- docs/increasing-request-rate.rst | 35 ++++++++++++++++++++++---------- 1 file changed, 24 insertions(+), 11 deletions(-) diff --git a/docs/increasing-request-rate.rst b/docs/increasing-request-rate.rst index 19bdd28e97..739e3b7ee6 100644 --- a/docs/increasing-request-rate.rst +++ b/docs/increasing-request-rate.rst @@ -4,25 +4,38 @@ Increasing the request rate =========================== -Increase the number of requests per second using a combination of the following steps: +If you're not getting the desired/expected throughput there are a number of things you can do. -#. Increase the number of users. To fully utilize your target system you may need a lot of simultaneous users, especially if each request takes a long time to complete. +Concurrency +----------- -#. If response times are unexpectedly high and/or increasing as the number of users go up, then you have probably saturated the system you are testing and need to dig into why. This is not really a Locust problem, but here are some things you may want to check: +Increase the number of Users. To fully utilize your target system you may need a lot of concurrent requests. Note that spawn rate/ramp up does not change peak load, it only changes how fast you get there. `Wait times `_ and sleeps *do* impact throughput. You can find a whole blog post on this topic `here `__. - - resource utilization (e.g. CPU, memory & network. Check these metrics on the locust side as well) - - configuration (e.g. max threads for your web server) - - back end response times (e.g. DB) - - client side DNS performance/flood protection (Locust will normally make at least one DNS Request per User) +Load generation performance +--------------------------- -#. If Locust prints a warning about high CPU usage (``WARNING/root: CPU usage above 90%! ...``) try the following: +If Locust prints a warning about high CPU usage (``WARNING/root: CPU usage above 90%! ...``) try the following: - Run Locust `distributed `__ to utilize multiple cores & multiple machines - Try switching to `FastHttpUser `__ to reduce CPU usage - Check to see that there are no strange/infinite loops in your code -#. If you are using a custom client (not HttpUser or FastHttpUser), make sure any client library you are using is gevent-friendly otherwise it will block the entire Python process (essentially limiting you to one user per worker) +Also, if you are using a custom client (not HttpUser or FastHttpUser), make sure any client library you are using is `gevent-friendly `__ otherwise it will block the entire Python process (essentially limiting you to one user per worker) -.. note:: +If you're doing really high throughput or using a lot of bandwidth, you may also want to check out your network utilization and other OS level metrics. - Hatch rate/ramp up does not change peak load, it only changes how fast you get there. \ No newline at end of file +If you have issues with load generator performance and would rather pay to make it someone else's problem, you should check out `Locust Cloud `__. + +Actual issues with the system under test +---------------------------------------- + +If response times are high and/or increasing as the number of users go up, then you have probably saturated the system you are testing. This is not a Locust problem, but here are some things you may want to check: + + - resource utilization (e.g. CPU, memory & network) + - configuration (e.g. max threads for your web server) + - back end response times (e.g. DB) + +There are a few common pitfalls specific to load testing too: + + - load balancing (make sure locust isn't hitting only a few of your instances) + - flood protection (sometimes a load test with the high amount of load from only a few machines will trigger this)