Load testing
As part of improving the performance of the product, we would need to do Load testing on some specific pages to start with.
- artillery.io has nice api and reporting as well - will output displaying relevant graphs.
- https://gatling.io/ is another option to explore.
- Have a suite which can be run against any instance/environment.
https://gitlab.com/gitlab-org/gitlab-ce/issues/58239:
Description fromIdeally, we would like to generate a ~10K user load on an environment. But in order to do this we would need to create a large test bed which would be an exact mirror of on-prem enterprise ~10K users. With the current challenges of setting up a test bed this works against our values of iterating and getting something that works quick and measure results.
Proposal
Calculate the load for ~10K users on a generic customer's reference but transpose the number down to a smaller scale.
We can work this off of our recommended installation guide.
- https://docs.gitlab.com/ee/install/requirements.html#cpu
- https://docs.gitlab.com/ee/install/requirements.html#memory
On an ideal 10K user setup.
- CPU
- 16 cores supports up to 10,000 users
- Memory
- 64GB RAM supports up to 8,000 users
Transpose to minimum viable performance spec and generate load at 500 users
- CPU
- 2 cores is the recommended number of cores and supports up to 500 users
- Memory
- 8GB RAM is the recommended memory size for all installations and supports up to 100 users
Tooling
Both tools that we are looking at can spawn unique visitors that we can configure to hit a given url. We can easily generate view load on pages with MRs and Issues with heavy artifacts.
artillery quick --count 10 -n 20 https://artillery.io/
This would allow us to unlease 10 unique virtual users on a given page.