I am quite new to the JIRA/Confluence system, but just having spent the better part of the day installing it (mainly sitting waiting until some task was done), I find it rather slow. Every time you click somewhere, I have to wait at least 5-10 seconds until something happens. Often much longer, also causing time-outs in my proxy. And this is even for trivial tasks like showing a user's profile.
I do not have a very heavy server, so I checked the system requirements, which told me a dual-core server should work fine.
My setup is as follows:
What can I do to improve the performance of JIRA/Confluence?
You didn't mention what DB you have behind Confluence. Given that it is a highly DB activity intensive application, that also makes a huge difference. I run mine on Windows 2012R2 (I have reasons for that as much as I prefer LInux for the platform) with a PostgreSQL DB. One of our other divisions run Confluence on a Debian distro with MySQL on an equivalent sized VM. With that difference and adding a couple of caching plugins so I can tune it, mine draws pages almost instantaneously while the one at the other division runs like a dog.
I might also comment that your host system is pretty tiny. Disk size is something that is repairable IF it has decent I/O but that just isn't enough RAM. Even for a small system, you should push to at least 4 and preferably 8GB then do some tuning on the java_opts at startup to increase heap size to JUST big enough (so you don't get into big GC issues.
You also didn't mention the version of Confluence you're running; I can't remember which one it was but when they went from Java 7 to 8 and Tomcat 7 to 8, that was another enormous boost.
So.. based on what I see here the things to do are:
That coupled with the tuning article above should get it humming well.
Nic, I am looking at it with an (almost) apples to apples comparison between one on PostgreSQL and MySQL... That is the biggest diff I can see. Add in that a few weeks ago, Oracle had a big announcement about a new version of MySQL that was 3X faster than the previous version which "made it a competitive performer" (not X times faster than everything else. I agree that MySQL is a robust DB BUT I have consistently found it to be significantly slower than PostgreSQL (I USED to run on MySQL but migrated)
My experience is that PostGreSQL is generally better than MySQL, by a little bit, so I'm not having a go at the position there, but to see and quote such a huge difference makes me think there's something wrong with your MySQL install. I've worked with probably hundreds of Jira installations, and never seen a big difference between PostGreSQL and MySQL performance or stability. PostGres squeaks ahead, and is easier to use, but the yawning chasm of the scale you describe is between MS-SQL (don't, just don't) and Oracle. The jump from Oracle to MySQL is a bit of a gap, but MySQL -> PostGres - negligible. (Although Oracle has been slipping down and MS-SQL rising up recently - the last couple of versions of Confluence have actually had fewer problems on MS than Oracle. Although they'd still be better off on MySQL or PostGres) It was more the utterly appalling performance of MS-SQL - which boils down to "Don't. Post-it notes work better" in most cases, and Oracle falls somewhere between MS and My.
What are you running it on (operating system) and what are the memory allocations you're giving to the systems (and allowing for the OS to keep running as well)?
Sorry, I should have said - if you're running it on Windows, check that what happens when you turn off any virus scanners (we can put them back on later, sort of, but they're known to destroy performance). Also, the memory settings are the "-Jmx" type flags - best place to get them is from "system information" pages in both applications.
The database landscape hasn't hugely changed over the last seven years.
The short answer is you should use the database that you are most happy working with. The difference in performance between well-maintained and well-configured databases is negligble.
If you really want to put them in order of "best" nowadays, it is
Postgres - it's the one Atlassian develop for and use for most of their services, so it gets the most attention.
Oracle or MySQL - joint second place for performance, stability, ease of use and so-on. Oracle drops into third place if you consider the costs. But there's not a big gap between them and Postgres.
MS-SQL - In last place simply because it's costly and harder to look after than the others.
But I can't emphasise enough that there's very little difference between them in terms of performance or functionality nowadays. You should make your choice based purely on "what would our database server team want to support?"