Search code examples
confluencejira-agile

Minimum hardware requirements for JIRA Software, Confluence and MySQL?


My company is considering a self-hosted option for a combination of JIRA, Confluence and MySQL running behind an nginx proxy. We are a very small team of 5, and expect extremely mild usage for now. I hardly even expect any concurrent usage at this point.

I am a bit puzzled by the various guidelines posted by Atlassian: https://confluence.atlassian.com/enterprise/jira-sizing-guide-461504623.html https://confluence.atlassian.com/adminjiraserver075/jira-applications-installation-requirements-935390824.html https://confluence.atlassian.com/doc/example-size-and-hardware-specifications-from-customer-survey-76840961.html https://confluence.atlassian.com/doc/server-hardware-requirements-guide-30736403.html

It seems they don't want to bother providing actual minimum hardware requirements. For example, on the same page they could say "minimum heap size to allocate to Confluence is 1 GB and 1 GB for Synchrony (which is required for collaborative editing)" and also that " minimum hardware recommendation" is 6GB. The leap from 1 required plus 1 optional to 6 recommended minimum is bizarre, to say the least.

I think what I want to know is whether I will be able to fit this setup into a 2GB RAM machine or a 4GB RAM machine (both dual CPU).


Solution

  • OK, I have done a test with following configuration:

    • VM with 2 cores capped at ~2.2Ghz and 4GB RAM
    • Ubuntu 16.04 server
    • Docker and docker-compose
    • Containers:
      • nginx
      • jwilder/docker-gen
      • jrcs/letsencrypt-nginx-proxy-companion
      • cptactionhank/atlassian-jira-software
      • cptactionhank/atlassian-confluence
      • mysql

    This 4GB RAM machine is barely capable of running this setup:

    $ free -m
                  total        used        free      shared  buff/cache   available
    Mem:           3951        3553         107           0         291         157
    Swap:           974         725         249
    

    CPU usage was going up to 200% only during initialisation when JIRA and Confluence started with empty home dirs. The following top output is after:

    • creating a space and a page in Confluence
    • and a project with ~10 issues in JIRA
    • and linking JIRA and Confluence together
    $ top -o %MEM | head -15
    top - 16:14:33 up  6:12,  2 users,  load average: 0.15, 0.04, 0.01
    Tasks: 132 total,   1 running, 131 sleeping,   0 stopped,   0 zombie
    %Cpu(s):  2.6 us,  0.5 sy,  0.0 ni, 95.8 id,  1.0 wa,  0.0 hi,  0.1 si,  0.0 st
    KiB Mem :  4046364 total,   128808 free,  3638444 used,   279112 buff/cache
    KiB Swap:   998396 total,   252956 free,   745440 used.   161144 avail Mem
    
      PID USER      PR  NI    VIRT    RES    SHR S  %CPU %MEM     TIME+ COMMAND
     6328 bin       20   0 3306232 1.468g      0 S   0.0 38.1  12:03.27 java
     6418 bin       20   0 2860000 1.320g      0 S   0.0 34.2  10:56.24 java
     7205 bin       20   0 2807088 476592   1724 S   0.0 11.8   1:58.37 java
     5752 999       20   0 1815480  99804   4728 S   0.0  2.5   1:11.29 mysqld
     1070 root      20   0  621908  28672   8904 S   0.0  0.7   0:30.74 dockerd
     1179 root      20   0  623004   7536   2520 S   0.0  0.2   0:16.66 docker-containe
      968 root      20   0  291352   6536   1912 S   0.0  0.2   0:00.77 snapd
     8310 root      20   0   15388   5064   3056 S   0.0  0.1   0:21.39 docker-gen
    

    Confluence also allocated ~500MB RAM to Synchrony:

    $ ps aux --sort -rss | head -4
    USER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
    bin       6328  3.3 38.3 3306232 1551120 ?     Ssl  10:14  12:12 /usr/lib/jvm/java-1.8-openjdk/bin/java -Djava.util.logging.config.file=/opt/atlassian/confluence...
    bin       6418  2.9 34.1 2860000 1382868 ?     Ssl  10:14  10:57 /usr/lib/jvm/java-1.8-openjdk/bin/java -Djava.util.logging.config.file=/opt/atlassian/jira/...
    bin       7205  0.5 11.7 2807088 476588 ?      Sl   10:44   1:59 /usr/lib/jvm/java-1.8-openjdk/jre/bin/java -classpath /opt/atlassian/confluence/temp/... synchrony.core sql
    

    During JIRA and Confluence install stage, MySQL peaked at around 500MB RAM usage, and during normal operation it sits around 100MB.

    In my attempts, a 2GB machine was only enough to run either JIRA or Confluence without MySQL.

    Conclusion: It looks like 4GB RAM Dual core machine is the absolute minimum required for JIRA+Confluence+MySQL. But keep in mind that such a machine is barely enough for a practically empty project.

    I personally was not expecting these applications to be that RAM hungry being empty.