Hi all! I’ve just rolled out a service with SQ Community Edition on AWS ECS and can’t get over it’s slow processing. There’re few things bothering me now:
- The UI is noticeably slow, takes up 4-5 seconds to load the list of projects, opening a project for at least 6-7 seconds, but more importantly it takes more than 80s to load any Project → Measures section, which is too slow for a request to fulfil in the web-server timeout range and it simply 504-s back to the request (I could adjust it with the env var, but it’s just unbearably slow).
- Compute engine (or background tasks) seem to be quite slow as well — a relatively small project of 26k LOC takes 25 min to analyse. A bit larger one with 120k LOC takes around 50min. That’s a lot (right?).
My configuration:
- SonarQube Community edition (10.3.0.82913) from docker hub;
- AWS ECS Service running a task with SQ container on 2vCPU and 6GB RAM;
- AWS EFS Volumes (NAT) used for the
/data
,/logs
and/extensions
- Postgres 12 on AWS RDS is used as the DB
I monitor utilization and it was on a very moderate level in every component, including under-utilized the ECS resources, so I went for bumping the heap settings to the following:
{
name: "SONAR_CE_JAVAOPTS",
value: "-Xms512m -Xmx2048m"
}, {
name: "SONAR_WEB_JAVAOPTS",
value: "-Xms512m -Xmx2048m"
},
{
name: "SONAR_SEARCH_JAVAOPTS",
value: "-Xms2048m -Xmx2048m"
},
{
name: "SONAR_SEARCH_JAVAADDITIONALOPTS",
value: "-Dnode.store.allow_mmap=false"
}
The logs are quite clear, there’s nothing extraordinary that could be related to the mentioned performance issues — no hints on why it’s that slow, no unexpected exceptions.
So, I’m wondering:
- First of all, is the described performance normal and expected, or something is off with my service?
- If something is off, how do I troubleshoot it? What’s the best way to debug such issues?
- Is the heap settings the only thing I can do to “boost” performance (though honestly I haven’t noticed any change since they were applied — it performs on a level similar to default). Is there a way to turn-off particular language analyzers as I don’t use them if that would help to optimize utilization?
Here are screenshots of the System page: