Wiki source code of Load Testing Plan

Last modified by Vincent Massol on 2024/11/19 16:12

Show last authors
1 This document designs a testing infrastructure allowing to test:
2
3 * General performance of XWiki releases
4 * Optimized performance settings of databases, velocity parameters,etc
5 * Comparative performance of databases (MySQL versions, Postgress, etc..)
6 * Comparative performance of hosting platforms
7
8 The infrastructure uses JMeter and is hosted and operated by XWiki SAS. XWiki SAS will publish reports on the XWiki releases performance.
9
10 = Test Wiki =
11
12 First we need a test wiki that is realistic compared to real data. Neither too full, neither too empty.
13
14 We have decided on the following:
15
16 - use XWiki documentation pages which have significant volume and tags
17 - use a script to create AppWithinMinutes content based on this data, making sure the script uses dates that are not too close
18 - create a small, medium and large AppWithinMinutes applications
19 - small app contains 100 documents with 50 versions each
20 - medium app contains 1000 documents with 20 versions each
21 - large app contains 10000 documents with 5 versions each
22
23 TODO: publish the test XWiki XAR
24
25 = JMeter Test Plan =
26
27 The JMeter test plan visits different areas of the Wiki:
28
29 - login
30 - the home page
31 - small app livetable, making some searches
32 - content from that livetable
33 - large app livetable, making some searches
34 - content from that livetable
35 - xwiki search using lucene
36 - visit pages from the search
37 - visit tags pages
38 - visit pages from on the tags
39
40 The load test works the following:
41
42 - a session is made of 12 pages comprising 175 requests including the dynamic pages, livetable ajax requests, dynamic css and js and attachments, the static css, js and images.
43 - the session has a duration of around 2 minutes which is an average of 10 secondes between pages.
44 - we loop the session 5 times (on session is 10 minutes)
45 - we setup a maximum simultaneous sessions of 25
46 - we setup a ramppup of 5 minutes (a new sessions starts every 10 seconds)
47
48 This leads to the maximum load reached from 5 to 10 minutes and a test time of around 15 minutes.
49
50 A bigger load test is:
51
52 - we loop the session 10 times (on session is 20 minutes)
53 - we setup a maximum simultaneous sessions of 100
54 - we setup a rampup of 10 minutes (a new sessions starts every 10 seconds)
55
56 This leads to the maximum load reached from 10 to 20 minutes and a test time of around 30 minutes.
57
58 The later test would corresponding to a company of 10000 people who each would visit 120 pages per day over the course of 10 hours during the day (with no usage spike).
59
60 TODO: publish the JMeter file
61
62 = Test Infrastructure =
63
64 The test is operated using JMeter remote controling a JMeter server running on a backup server which CPU usage is close to zero during the day. The Jmeter server will connect to the test infrastructure running XWiki. We have setup JMeter to be able to call only one wiki, but also multiple copies of the same Wiki. This allows to test how an VM infrastructure can handle the load as well as provide an indication of the performance in cluster mode.
65
66 We will publish the results for XWiki Enteprise 4.4.1 with the following settings:
67
68 - default recommended XWiki Enterprise 4.4.1 and MySQL 5.1 Settings for a medium server
69
70 These results will then be a base results for any changes on the code or changes in the default settings for mysql, xwiki, velocity. We will also use newrelic to instrument the VM and measure hotspots in the code.

Get Connected