Wiki source code of XWiki Instance Sizing

Last modified by Eleni Cojocariu on 2026/08/13 14:20

Hide last authors
Eleni Cojocariu 2.1 1 An XWiki deployment is sized by matching its usage to a named instance profile, then provisioning the hardware listed for that profile. Sizing is not tuning: JVM options, caching, database indexes and clustering are covered by the [[Performance>>doc:Documentation.AdminGuide.Performances.WebHome]] page.
Clément Aubin 1.1 2
3 {{warning}}
Eleni Cojocariu 2.1 4 These recommendations are a guideline. The type of content hosted in XWiki, the extensions installed, the number of subwikis and any other customization make the sizing of an instance vary greatly.
Clément Aubin 1.1 5 {{/warning}}
6
Eleni Cojocariu 2.1 7 == Instance Profiles ==
Clément Aubin 1.1 8
Eleni Cojocariu 2.1 9 A profile is determined by three independent dimensions. Evaluate each one and keep the **highest** of the three profiles.
Clément Aubin 1.1 10
Eleni Cojocariu 2.1 11 |=Profile|=Typical deployment|=Active users|=Documents, all versions|=Average page views per second
12 |Tiny|Personal wiki, proof of concept, small team intranet|Up to 25|Up to 5,000|Up to 0.5
13 |Small|Departmental wiki, small company intranet|Up to 250|Up to 100,000|Up to 5
14 |Medium|Company-wide wiki, collaborative portal|Up to 2,500|Up to 1,000,000|Up to 25
15 |Large|Enterprise-wide wiki, public-facing knowledge base|Up to 25,000|Up to 10,000,000|Up to 100
16 |Huge|Multi-tenant farm, high-traffic public wiki|More than 25,000|More than 10,000,000|More than 100
Clément Aubin 1.1 17
Eleni Cojocariu 2.1 18 * **Active users** are the accounts that log in and interact with XWiki at least once a month. Readers browsing public pages without authenticating count as page views instead.
19 * **Documents** are the pages, blog posts, attachments and other documents stored in the wiki. The "Index" tab of the [[Page Index>>doc:documentation.xs.user.base.page.view-all-pages.WebHome]] gives their current number; including their versions takes a query on the database.
20 * **Average page views per second** are the HTTP requests per second reaching the application server over a representative day, read from the reverse proxy logs or from an APM tool.
Clément Aubin 1.1 21
Eleni Cojocariu 2.1 22 An instance with 800 active users (Medium), 60,000 documents (Small) and 8 page views per second (Medium) is therefore sized as a Medium instance.
Clément Aubin 1.1 23
Eleni Cojocariu 2.1 24 == Sizing Recommendations ==
Clément Aubin 1.1 25
Eleni Cojocariu 2.1 26 The values below are for a single machine hosting both the XWiki application server and the database server. The JVM heap is a subset of that RAM, set explicitly rather than derived from it; the remainder is shared by the operating system, the database engine and the memory the JVM uses outside its heap.
Clément Aubin 1.1 27
Eleni Cojocariu 2.1 28 |=Profile|=RAM|=JVM heap (##-Xmx##)|=CPU|=Storage
29 |Tiny|2 GB|1 GB|2 cores|5 GB
30 |Small|4 GB|2 GB|2 cores|20 GB
31 |Medium|8 GB|4 GB|4 cores|100 GB
32 |Large|16 GB|8 GB|8 cores|500 GB
33 |Huge|64 GB|32 GB|24+ cores|1 TB+
Clément Aubin 1.1 34
Eleni Cojocariu 2.1 35 Do not give the JVM more heap than the profile calls for: a larger heap holds more objects at any time, and the full garbage collections that reclaim them pause the application for longer. An instance running on [[HSQLDB>>doc:documentation.xs.admin.installation.methods.install-xwiki-war.install-relational-database.configure-hsqldb.hsqldb-limitations.WebHome]] is the exception, since it keeps the whole database in the heap.
Clément Aubin 1.1 36
Eleni Cojocariu 2.1 37 At the Huge scale the architecture is planned against the actual workload and monitored continuously. Such an instance also needs:
Clément Aubin 1.1 38
Eleni Cojocariu 2.1 39 * a [[cluster>>doc:Documentation.AdminGuide.Clustering.WebHome]] of two or three application nodes and a dedicated database server, each application node sized at 32 GB of RAM, 16 GB of JVM heap and 16+ cores;
40 * a dedicated [[reverse proxy>>doc:documentation.xs.admin.installation.http-reverse-proxy.WebHome]], with static-asset caching and HTTP compression enabled.
Clément Aubin 1.1 41

Get Connected