Wiki source code of XWiki Instance Sizing
Last modified by Eleni Cojocariu on 2026/08/13 14:20
Hide last authors
| author | version | line-number | content |
|---|---|---|---|
![]() |
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. |
| |
1.1 | 2 | |
| 3 | {{warning}} | ||
![]() |
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. |
| |
1.1 | 5 | {{/warning}} |
| 6 | |||
![]() |
2.1 | 7 | == Instance Profiles == |
| |
1.1 | 8 | |
![]() |
2.1 | 9 | A profile is determined by three independent dimensions. Evaluate each one and keep the **highest** of the three profiles. |
| |
1.1 | 10 | |
![]() |
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 | ||
| |
1.1 | 17 | |
![]() |
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. | ||
| |
1.1 | 21 | |
![]() |
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. |
| |
1.1 | 23 | |
![]() |
2.1 | 24 | == Sizing Recommendations == |
| |
1.1 | 25 | |
![]() |
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. |
| |
1.1 | 27 | |
![]() |
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+ | ||
| |
1.1 | 34 | |
![]() |
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. |
| |
1.1 | 36 | |
![]() |
2.1 | 37 | At the Huge scale the architecture is planned against the actual workload and monitored continuously. Such an instance also needs: |
| |
1.1 | 38 | |
![]() |
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. | ||
| |
1.1 | 41 |
