{"id":1282,"date":"2010-07-01T19:59:28","date_gmt":"2010-07-02T02:59:28","guid":{"rendered":"https:\/\/blogs.plm.automation.siemens.com\/t5\/Polarion-Blog\/Polarion-Performance-amp-Scalability\/ba-p\/380645"},"modified":"2026-03-26T05:36:44","modified_gmt":"2026-03-26T09:36:44","slug":"polarion-performance-scalability-2","status":"publish","type":"post","link":"https:\/\/blogs.sw.siemens.com\/polarion\/polarion-performance-scalability-2\/","title":{"rendered":"Polarion Performance &#038; Scalability"},"content":{"rendered":"<p><H2>Introduction<\/H2><br \/>\nThis document will describe the critical performance factors of the Polarion platform, scalability pitfalls and limitations, and recommendations related to capacity-planning your production environment. It will do so based on a few scenarios that are representative of our install base.<!--more--><br \/>\n<H2>System Configuration Landscape<\/H2><br \/>\nPolarion is a web-based application. Clients interface with it through a standard web browser. As a result of this, Polarion can be accessed via LAN, WAN (e.g. company-internal inter-office networks), Internet or VPN.<br \/>\n<P style=\"text-align: center;\"><IMG class=\"aligncenter size-full wp-image-827\" title=\"architecture\" alt=\"\" src=\"http:\/\/community.plm.automation.siemens.com\/legacyfs\/online\/siemensplm_blogs\/2010\/07\/architecture.png\" width=\"528\" height=\"656\" \/><\/P><\/p>\n<p><H2>Application Architecture<\/H2><br \/>\nPolarion is built on top of a growing number of open source frameworks and APIs.&nbsp; All of these components have their own performance and scalability characteristics, only some of which are relevant to Polarion, because of how these components are used by the Polarion platform. Some factors may not even come into play except in very large, or very heavily stressed environments.<\/p>\n<p><IMG class=\"aligncenter size-full wp-image-826\" title=\"Structure\" alt=\"\" src=\"http:\/\/community.plm.automation.siemens.com\/legacyfs\/online\/siemensplm_blogs\/2010\/07\/Structure.png\" width=\"595\" height=\"486\" \/><br \/>\n<H2>Platform Components<\/H2><br \/>\n<H3>Apache HTTP Server<\/H3><br \/>\nApache is the de facto web server solution, rivaled only by IIS on Windows platforms. It is extremely robust, and powers some of the largest websites on the Internet.<br \/>\n<H4>Scalability and Performance<\/H4><br \/>\nThere are no known issues related to Apache as a performance bottleneck for Polarion.<br \/>\n<H4>Recommendations<\/H4><br \/>\nThe Polarion installation procedure installs and configures Apache for you. It is recommended that you don\u2019t deviate from this configuration unless you have very specific reason to, and only after consulting with your Polarion Support Team, to avoid unnecessary performance degradation or system downtime.<br \/>\n<H3>Subversion<\/H3><br \/>\nSince its initial launch in 2004, Subversion<A href=\"#_edn1\" rel=\"nofollow noopener noreferrer\">[i]<\/A> has quickly become the de facto solution for version control in organizations of all sizes around the world. Polarion uses Subversion to store almost all of its configuration and data<A href=\"#_edn2\" rel=\"nofollow noopener noreferrer\">[ii]<\/A>.<br \/>\n<H4>Scalability and Performance<\/H4><br \/>\nOne of Subversion\u2019s key strengths is also its primary performance bottleneck. Subversion uses a strict transactional commit model, which means only one commit transaction can be processed by a repository at one time. This means that if the repository is experiencing heavy write traffic, write requests are queued and processed one at a time.<\/p>\n<p>That being said, Polarion change sets are typically in the range of kilobytes, which is far from heavy lifting for Subversion.<\/p>\n<p>Subversion has no proven upper limit as far as repository size is concerned. The Apache Foundation uses a single repository for all of its projects (including Subversion itself, as well as the Apache Web Server project), which consists of well over 900k revisions<A href=\"#_edn3\" rel=\"nofollow noopener noreferrer\">[iii]<\/A>.<br \/>\n<H4>Recommendations<\/H4><br \/>\nThe key factor is to limit the amount of processing that is done in the various commit hooks on the Subversion repository itself to boost the operations\u2019 performance. Any non-trivial automation should be implemented to run out-of-process of the commit itself whenever and wherever possible.<\/p>\n<p>Subversion requires ultra-fast access to its file system. Anything other than physically attached storage is strongly discouraged.<br \/>\n<H3>Lucene<\/H3><br \/>\nPolarion stores all of its&nbsp; (XML) data (and configuration) in Subversion. This means we have to bridge the gap between not having a database backend, and having to be able to query and quickly retrieve and filter data. Lucene<A href=\"#_edn4\" rel=\"nofollow noopener noreferrer\">[iv]<\/A> is a powerful indexing framework, and Polarion used it to implement what we affectionately refer to as \u201cThe Index\u201d, which is what the Polarion platform uses for all of its read operations.<br \/>\n<H4>Scalability and Performance<\/H4><br \/>\nLucene has built-in mechanisms to balance fast in-memory storage with on-disk overflow to limit the memory footprint of larger data sets. Beyond that, there is no known upper limit to what Lucene can handle. It scales in an almost perfectly linear fashion when increasing the number of concurrent requests.<\/p>\n<p>The critical performance factor for Lucene is the number of returned results. To mitigate this, Polarion makes heavy use of lazy loading whenever possible.<br \/>\n<H4>Recommendations<\/H4><br \/>\nUsers are encouraged to narrow the scope of their queries to extract more relevant results.<br \/>\n<H3>Microsoft Word\/Excel<\/H3><br \/>\nThe one exception to the storage model (XML in Subversion) is the LiveDoc feature, where work items are stored in Word and\/or Excel documents, which are in turn stored in Subversion.<br \/>\n<H4>Scalability and Performance<\/H4><br \/>\nBecause to Polarion, the document is a single entity that may contain many work items, every time the document is updated, all of its work items need to be refreshed in the index. As a result, there is a scalability concern related to the number of work items contained in a single LiveDoc Word or Excel document, as well as the overall size of each LiveDoc document file.<br \/>\n<H4>Recommendations<\/H4><br \/>\nPolarion recommends that you limit the number of work items in a single LiveDoc to 1000 for Excel, and 500 for Word. The size of any LiveDoc should not exceed 20MB.<br \/>\n<H3>Polarion Modules<\/H3><br \/>\n<H4>Scalability and Performance<\/H4><br \/>\nWork items contained in a module are stored separately from other work items in a project, and are treated differently because of the added constraints of the module concept. As a result, modules with more than 1,000 work items are only supported when auto-suspect links are disabled (using the \u201cspeedup\u201d property, see manual for details).<br \/>\n<H4>Recommendations<\/H4><br \/>\nNo single module should contain more than 5,000 work items.<br \/>\n<H2>Overall Performance and Scalability<\/H2><br \/>\nThis topic needs to be looked at from two separate yet related perspectives: load and volume of data.<br \/>\n<H3>Load<\/H3><br \/>\nWhen looking at Polarion as a whole, you will notice it scales almost perfectly linearly on Dual Core-CPU platforms. When moving to 8 CPU cores, the application essentially scales infinitely, for all practical intents and purposes.<br \/>\n<P style=\"text-align: center;\"><IMG class=\"aligncenter size-full wp-image-855\" title=\"load\" alt=\"\" src=\"http:\/\/community.plm.automation.siemens.com\/legacyfs\/online\/siemensplm_blogs\/2010\/07\/load.png\" width=\"600\" height=\"360\" \/><\/P><br \/>\nThe graph points that 80% of save operations with 100 concurrent users actively working with the server will be served in less than 4 secs on one Intel i7 CPU platform. <EM>* If there are 100 users changing work items every 5 mins, statistically computed there will be 80%probability that less than 5 save operations go in parallel.<\/EM><\/p>\n<p>&nbsp;<br \/>\n<H3>Volume<\/H3><br \/>\nAs long as Polarion\u2019s data remains within the parameters set out earlier in this document, scalability of volume is limited to memory (RAM) consumption, and manifests itself as a largely linear relationship between number of projects <SPAN style=\"text-decoration: underline;\">in one repository<\/SPAN> and Polarion\u2019s overall memory footprint.<br \/>\n<P style=\"text-align: center;\"><IMG class=\"aligncenter size-full wp-image-854\" title=\"volume\" alt=\"\" src=\"http:\/\/community.plm.automation.siemens.com\/legacyfs\/online\/siemensplm_blogs\/2010\/07\/volume1.png\" width=\"600\" height=\"359\" \/><\/P><\/p>\n<p><H3>Reference Customer Installations<\/H3><br \/>\nThe following are examples showing a range of customer installations. Examples are for the purpose of illustrating what kinds of numbers you may need to be thinking of when planning your own installation\u2019s scalability.<\/p>\n<p><STRONG>Customer \u201cA\u201d<\/STRONG><br \/>\n<UL><br \/>\n\t<LI>15,000 work items<\/LI><br \/>\n\t<LI>12 projects<\/LI><br \/>\n\t<LI>60 users<\/LI><br \/>\n<\/UL><br \/>\n<STRONG>Customer \u201cB\u201d<\/STRONG><br \/>\n<UL><br \/>\n\t<LI>25,000 work items<\/LI><br \/>\n\t<LI>145 projects<\/LI><br \/>\n\t<LI>1030 users<\/LI><br \/>\n<\/UL><br \/>\n<STRONG>Customer \u201cC\u201d<\/STRONG><br \/>\n<UL><br \/>\n\t<LI>14,000 work items<\/LI><br \/>\n\t<LI>19 projects<\/LI><br \/>\n\t<LI>600 users<\/LI><br \/>\n<\/UL><br \/>\n<H2>External Factors and Recommendations<\/H2><br \/>\n<H3>Client<\/H3><br \/>\nLike most other rich web-based applications, Polarion caches a lot of dynamic content in the browser. As a result, memory consumption of the browser process can balloon over time. Polarion recommends that you close your browser after using Polarion, to keep this from becoming a problem.<br \/>\n<H3>File System<\/H3><br \/>\nPolarion can be heavily dependent on disk operations, especially as the server scales to where a growing portion of the index is serialized to the file system.<\/p>\n<p>Performance of the index can be sensitive to disk fragmentation. No operating system is immune to this. Most Linux distribution do give the option of using the ext3 file system, which has features to prevent meaningful fragmentation altogether. In all other cases, regularly scheduled defragmentation is highly recommended.<\/p>\n<p>Subversion requires local or as-fast-as-local file system access to the repository. We strongly recommend either an internal drive, or attached storage (fiber-optic connection). If network-attached storage (NAS) must be used, the length, speed and stability of the network path between server and storage is absolutely critical.<br \/>\n<H3>Virus Scanners<\/H3><br \/>\nReal-time virus scanning can cripple file system performance like nothing else. We recommend you exclude the Subversion repository file structure and all on-disk index (Lucene) data from being scanned, and schedule any scans you feel are needed overnight.<br \/>\n<H3>Operating System<\/H3><br \/>\nWindows is generally slower than Linux in all relevant areas<A href=\"#_edn1\" rel=\"nofollow noopener noreferrer\">[i]<\/A>. Beyond ease of installation, there is no recommendation as to a particular flavor of Linux.<\/p>\n<p>Selecting a 64-bit rather than a 32-bit operating system allows for more memory to be assigned to the server process. Even if this is not an immediate concern, it makes for much easier scalability, as replacing a 32-bit with a 64-bit operating system down the road is going to be an intrusive exercise.<\/p>\n<p>For production environments, we recommend a 64-bit Linux with at least 4GB of RAM.<br \/>\n<H3>Network<\/H3><br \/>\nThe Polarion client interface relies heavily on quick, short bursts of communication with the server. Network latency is a major factor in client performance degradation. For this reason, network roundtrip (ping) between client and server should ideally be no worse than 150ms.<br \/>\n<H3>Virtualization<\/H3><br \/>\nVirtual environments come at a performance cost, since hardware components such as memory, network, graphics and even storage, are emulated by software. As a result, any application that runs in a virtual machine (VM) will perform worse compared with running the same application on dedicated actual hardware with the same specification.<\/p>\n<p>Polarion recommends that you only run Polarion on virtual machines running Linux. This is largely due to Windows being a slower, larger-footprint operating system to begin with, a fact that only gets amplified by adding virtualization to the mix.<br \/>\n<H1>Example Hardware Configurations<\/H1><br \/>\n<TABLE border=\"1\" cellspacing=\"0\" cellpadding=\"0\"><br \/>\n<TBODY><br \/>\n<TR><br \/>\n<TD valign=\"top\" width=\"291\"><\/TD><br \/>\n<TD valign=\"top\" width=\"100\"><STRONG>Small<\/STRONG><\/TD><br \/>\n<TD valign=\"top\" width=\"100\"><STRONG>Medium<\/STRONG><\/TD><br \/>\n<TD valign=\"top\" width=\"100\"><STRONG>Large<\/STRONG><\/TD><br \/>\n<\/TR><br \/>\n<TR><br \/>\n<TD valign=\"top\" width=\"291\"><STRONG>Operating System<\/STRONG><\/TD><br \/>\n<TD valign=\"top\" width=\"100\">32 or 64-bit<\/TD><br \/>\n<TD valign=\"top\" width=\"100\">64-bit<\/TD><br \/>\n<TD valign=\"top\" width=\"100\">64-bit<\/TD><br \/>\n<\/TR><br \/>\n<TR><br \/>\n<TD valign=\"top\" width=\"291\"><STRONG>CPU Cores<\/STRONG><\/TD><br \/>\n<TD valign=\"top\" width=\"100\">2<\/TD><br \/>\n<TD valign=\"top\" width=\"100\">4<\/TD><br \/>\n<TD valign=\"top\" width=\"100\">8<\/TD><br \/>\n<\/TR><br \/>\n<TR><br \/>\n<TD valign=\"top\" width=\"291\"><STRONG>GB RAM (dedicated to Polarion)<\/STRONG><\/TD><br \/>\n<TD valign=\"top\" width=\"100\">4 (1-2+)<\/TD><br \/>\n<TD valign=\"top\" width=\"100\">6 (4+)<\/TD><br \/>\n<TD valign=\"top\" width=\"100\">8 (6+)<\/TD><br \/>\n<\/TR><br \/>\n<TR><br \/>\n<TD valign=\"top\" width=\"291\"><STRONG>Storage<\/STRONG><\/TD><br \/>\n<TD valign=\"top\" width=\"100\">250GB<\/TD><br \/>\n<TD valign=\"top\" width=\"100\">500GB<\/TD><br \/>\n<TD valign=\"top\" width=\"100\">1TB<\/TD><br \/>\n<\/TR><br \/>\n<TR><br \/>\n<TD valign=\"top\" width=\"291\"><\/TD><br \/>\n<TD valign=\"top\" width=\"100\"><\/TD><br \/>\n<TD valign=\"top\" width=\"100\"><\/TD><br \/>\n<TD valign=\"top\" width=\"100\"><\/TD><br \/>\n<\/TR><br \/>\n<TR><br \/>\n<TD valign=\"top\" width=\"291\"><STRONG># Projects<\/STRONG><\/TD><br \/>\n<TD valign=\"top\" width=\"100\">&lt; 100<\/TD><br \/>\n<TD valign=\"top\" width=\"100\">&gt; 100<\/TD><br \/>\n<TD valign=\"top\" width=\"100\">&gt; 300<\/TD><br \/>\n<\/TR><br \/>\n<\/TBODY><br \/>\n<\/TABLE><\/p>\n<p><HR size=\"1\" \/><\/p>\n<p><A href=\"#_ednref1\" rel=\"nofollow noopener noreferrer\">[i]<\/A> <A href=\"http:\/\/subversion.apache.org\/\" rel=\"nofollow noopener noreferrer\">http:\/\/subversion.apache.org<\/A><\/p>\n<p><A href=\"#_ednref2\" rel=\"nofollow noopener noreferrer\">[ii]<\/A> Exceptions include trend and reporting data, as well as log files.<\/p>\n<p><A href=\"#_ednref3\" rel=\"nofollow noopener noreferrer\">[iii]<\/A> As of April 2010; see: <A href=\"http:\/\/svn.apache.org\/repos\/asf\/\" rel=\"nofollow noopener noreferrer\">http:\/\/svn.apache.org\/repos\/asf\/<\/A><\/p>\n<p><A href=\"#_ednref4\" rel=\"nofollow noopener noreferrer\">[iv]<\/A> <A href=\"http:\/\/lucene.apache.org\/java\/docs\/index.html\" rel=\"nofollow noopener noreferrer\">http:\/\/lucene.apache.org\/java\/docs\/index.html<\/A><\/p>\n<p><A href=\"#_ednref1\" rel=\"nofollow noopener noreferrer\">[i]<\/A> Up to 5% slower in file system operations.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Introduction<br \/>\nThis document will describe the critical performance factors of the Polarion platform, scalability pitfalls and limitations, and recommendations related to capacity-planning your produc&#8230;<\/p>\n","protected":false},"author":68980,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"spanish_translation":"","french_translation":"","german_translation":"","italian_translation":"","polish_translation":"","japanese_translation":"","chinese_translation":"","footnotes":""},"categories":[1],"tags":[],"industry":[],"product":[],"coauthors":[],"class_list":["post-1282","post","type-post","status-publish","format-standard","hentry","category-news"],"_links":{"self":[{"href":"https:\/\/blogs.sw.siemens.com\/polarion\/wp-json\/wp\/v2\/posts\/1282","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/blogs.sw.siemens.com\/polarion\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blogs.sw.siemens.com\/polarion\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blogs.sw.siemens.com\/polarion\/wp-json\/wp\/v2\/users\/68980"}],"replies":[{"embeddable":true,"href":"https:\/\/blogs.sw.siemens.com\/polarion\/wp-json\/wp\/v2\/comments?post=1282"}],"version-history":[{"count":1,"href":"https:\/\/blogs.sw.siemens.com\/polarion\/wp-json\/wp\/v2\/posts\/1282\/revisions"}],"predecessor-version":[{"id":1283,"href":"https:\/\/blogs.sw.siemens.com\/polarion\/wp-json\/wp\/v2\/posts\/1282\/revisions\/1283"}],"wp:attachment":[{"href":"https:\/\/blogs.sw.siemens.com\/polarion\/wp-json\/wp\/v2\/media?parent=1282"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blogs.sw.siemens.com\/polarion\/wp-json\/wp\/v2\/categories?post=1282"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blogs.sw.siemens.com\/polarion\/wp-json\/wp\/v2\/tags?post=1282"},{"taxonomy":"industry","embeddable":true,"href":"https:\/\/blogs.sw.siemens.com\/polarion\/wp-json\/wp\/v2\/industry?post=1282"},{"taxonomy":"product","embeddable":true,"href":"https:\/\/blogs.sw.siemens.com\/polarion\/wp-json\/wp\/v2\/product?post=1282"},{"taxonomy":"author","embeddable":true,"href":"https:\/\/blogs.sw.siemens.com\/polarion\/wp-json\/wp\/v2\/coauthors?post=1282"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}