Myllyn Paras produces and sells flour, flakes, pasta and groats as well as frozen dough and pastries. The company is a market leader in Finland in frozen dough and pasta products. Their recently launched site includes a recipe search where users can browse a large database of recipes through different filters. The number of possible filter combinations is fairly large and it is not feasible to cache everything beforehand.
Supervisor tested the site with users, who selected a random filter from the first available options, such as "no wheat" or "dairy free". After the selection the recipe finder showed a narrower list of available filters and suggested recipes. Throughout these selection actions we simulated real user behavior by scrolling the page a bit (to cause different scripts to load and images to render) and pausing for 3 to 7 seconds (to think). Every user performed a 2 to 4 searches within the single session before exiting the site.
The test was performed by incrementally adding new users to the site starting from one. When the concurrent users reached about 100 (20% of the desired target) the site started to slow down due to settings like MySQL memory limits. Interestingly, the number of images served for the users caused outgoing network traffic to reach its 100mb/s maximum capacity. The test was continued after the settings were tweaked and network interface capacity increased. The next bottleneck was found with about 250 concurrent users where the single CPU core reached 80% usage. After adding another core to the server, the test was continued and the site performed well under continuous load of 500 concurrent users searching recipes and browsing the site as real users would have.
After the test, the hosting provider (ops.host) gave a recommendation to increase network capacity along with an additional CPU core to handle the desired traffic.